ОС
Ольга Сидорова

java jdbc, помощь необходима пожалуйста



Просьба помочь с вопросом...как можно это добить или реализовать другим способом ?



Я произвожу соединение с БД MS_SQL_Server_2008 и делаю запрос
Я долго бился как можно узнать результат пуст или нет и решил сделать следующим образом

con2 = DriverManager.getConnection("jdbc:sqlserver://" + per_1 + ":1433;DatabaseName = process;", "" + per_2 + "", "" + per_3 + "");
Statement Op1 =con2.createStatement ();

ResultSet rs = Op1.executeQuery("SELECT t1.Id, t1.TerminalID " +
"FROM dbo.PreprocessingNewPayments t1 " +
"WHERE t1.StatusID = '7' AND " +
"(" + idterfil + ") AND (" + idprovfil + ") AND (t1.PaymentDateTime>='"+dat_1+"' AND t1.PaymentDateTime<'"+dat_2+"') " +
"UNION ALL " +
"SELECT t1.Id, t1.TerminalID " +
"FROM dbo.PreprocessingPayments t1 " +
"WHERE t1.StatusID = '7' AND " +
"(" + idterfil + ") AND (" + idprovfil + ") AND (t1.PaymentDateTime>='"+dat_1+"' AND t1.PaymentDateTime<'"+dat_2+"') " +
"ORDER BY t1.InitializeDateTime DESC; ");

boolean flag_rs = false;
if (rs.next()){
flag_rs = true;
System.out.println(rs.getString(1));
}
rs.first();
System.out.println(rs.getString(1));

но мне выкидывает сообщение об ошибке

com.microsoft.sqlserver.jdbc.SQLServerException: Запрошенная операция не поддерживается для однопроходных результирующих наборов.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.throwNotScrollable(SQLServerResultSet.java:402)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetIsScrollable(SQLServerResultSet.java:425)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.first(SQLServerResultSet.java:1400)
at gis.GisGmpCsv.main(GisGmpCsv.java:298)

РУГАЕТСЯ НА СТРОКУ
rs.first();

Александр Семенчуков
Александр Семенчуков

В результате выборки возвращается курсор для прохода вперёд (forward only), о чём вы попросили "by default" при создании statement. Проход по курсору назад не поддерживается - ругается правильно.
Как я понял, двунаправленный курсор (scrollable) вам и не нужен, нужно только знать есть ли что в курсоре.
Легче всего:
boolean hasResult = false;
while (rs.next()) {
hasResult = true;
// обработка курсора
}
В противном случае, если действительно нужен двунаправленный курсор, копайте в сторону createStatement(int resultSetType, int resultSetConcurrency). И почитайте про ваш JDBC драйвер (jTDS или MS) как это драйвером поддерживается.

Похожие вопросы
Java программисты, нужна ваша помощь
НУЖНА помощь ПО JAVA!!!
какую библиотеку необходимо подключить в JAVA и как?
помогите пожалуйста на java script...
Как сделать в visual studio, с помощью java script..?
Помощь програмистов в Java Script
Нужна помощь с Java.
Нужна помощь по Java Script
Помогите пожалуйста в java
Пожалуйста, необходима помощь!