Итак, решение, которое я создал, вызвало это исключение: jdbc.SQLServerException: The result set has no current row
на строке, указанной в приведенном ниже коде.JDBC.SQLServerException: в результирующем наборе нет текущей строки
public String get64BitEncodedImageBySiteID(int siteID){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, userName, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT SitePicture FROM SiteTable WHERE SiteID ="+siteID);
rs.next();
// The above line has since been moved to the if statement below where you can see it commented out,
// which prevents the exception from occuring but still doesn't fix the fact that the row is not being found.
if(/*rs.next() &&*/ rs.getBytes("SitePicture")!=null){ // EXCEPTION THROWN HERE!
byte ba[] = rs.getBytes("SitePicture");
return new sun.misc.BASE64Encoder().encodeBuffer(ba);
}
else {return null;}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
Метод выше, в случае, исключение было брошено, принимает подлинный siteID (22379) от объекта Entity берется непосредственно из той же таблицы. При использовании System.out.println(siteID);
во время этого метода он объявлял, что число все равно будет правильным, то есть все еще 22379. Я проверил непосредственно с SQL-сервером, выполнив идентичный оператор в SQL Server, поэтому я знаю, что строка существует в таблице, но для по какой-то причине он не найден. Изображение ниже.
Так что проблема есть, ResultsSet rs
не находит строку, даже если я знаю, что он там. У кого-нибудь есть полезная информация?
Уточнение: Просто, чтобы быть ясным, я знаю, что ResultsSet не содержит строк, и именно поэтому я получаю исключение. Я также знаю, что включение rs.next() в оператор if предотвратит исключение (как уже указано в комментариях). Меня озадачивает то, что тот факт, что ResultsSet не содержит строк, даже если строка с идентификатором, анализируемым на нем, достоверно существует, потому что я проверил его непосредственно с SQL-сервером.
@JunedAhsan должно быть 'rs.next()' Я думаю, 'rs.hasNext()' нет в результирующем – SpringLearner
@downvoter - Если есть проблема с моим вопросом я должен знать, что это является. Сдвиг на нем сам по себе не помогает. –
Вы пытались поместить постоянное значение вместо 'siteID'? Подобно 'SELECT SitePicture FROM SiteTable WHERE SiteID = 42' или тому, что дает правильные результаты при выполнении непосредственно на SQL-сервере. –