код:
Connection connection;
String url, usernameDB, passwordDB;
url = "...";
usernameDB = "...";
passwordDB = "...";
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url, usernameDB, passwordDB);
Statement statement = connection.createStatement();
queryResult = statement.executeQuery(query);
boolean moreRecords = queryResult.next();
if(!moreRecords)
{
out.writeBoolean(false);
out.flush();
}
else
{
int cols=0;
out.writeBoolean(true);
out.flush();
out.reset(); // line 1
cols = queryResult.getMetaData().getColumnCount();
out.writeInt(cols);
out.flush();
out.reset();
out.flush();
out.reset();
do
{
for(int i=1;i<=cols;i++)
{
out.writeObject(queryResult.getObject(i)); // line 2
out.flush();
out.reset();
}
out.writeBoolean(false);
out.flush();
out.reset();
}
while(queryResult.next());
}
'out' - это ObjectOutputStream.
Когда я добираюсь до строки 1 в приведенном выше коде, объект queryResult сбрасывается сам, и когда я прихожу кстрока 2 я получаю исключение:
"java.sql.SQLException: после окончания набора результатов".
Я попытался найти способ увеличить время ожиданиясвязи, но не нашел пути.кажется, что когда я попадаю в строку 1 в приведенном выше коде, я теряю соединение с базой данных, тем самым разрушая мой объект queryResult.
Есть ли способ решить эту проблему или, возможно, клонировать набор результатов (сзначения)?
РЕДАКТИРОВАТЬ
этот код выполняется в Tomcat 6, я открываю ServerSocket и для каждого соединения я запускаю новый поток, который, в свою очередь, выполняет код выше....