Я извлекаю два столбца из таблицы в MySql, используя prepareStatement в Java. Запрос действителен и возвращает строки, если я выполняю его непосредственно в mySql DB. но для этого вызова метода ResultSet имеет значения «false» для каждого вызова ResultSet.next(). Ниже приведен код:ResultSet является false в executeQuery Mysql - Java, даже когда существует строка
private ResultSet fetchFriends(int lActProfId) throws SQLException {
// TODO Auto-generated method stub
String selectRelationQry= "SELECT friend_id, type FROM fs_relationship WHERE profile_id =?";
System.out.println("---- In method FetchAndInsertInWall()->fetchFriends - Qry: "+selectRelationQry);
pst = lCon.prepareStatement(selectRelationQry);
pst.setInt(1, lActProfId);
System.out.println("lActProfId: "+ lActProfId);
ResultSet res3 = pst.executeQuery();
System.out.println("---- temp--- In method FetchAndInsertInWall()->fetchFriends query has no Results");
if(!res3.next()){
System.out.println("---- In method FetchAndInsertInWall()->fetchFriends query has no Results");
} else {System.out.println("Elements in res3: "+res3.next() + res3.next() + res3.next());
}
pst = null;
return res3;
}
Я получаю следующий вывод на консоль:
---- In method FetchAndInsertInWall()->fetchFriends - Qry: SELECT friend_id, type FROM fs_relationship WHERE profile_id =?
lActProfId: 5002
---- temp--- In method FetchAndInsertInWall()->fetchFriends query has no Results
Element in res31: false
----> WallInsertions Failed for Uid: 5002
java.sql.SQLException: Illegal operation on empty result set.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:855)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2710)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2851)
at com.fs.javadbact.FetchDataAndInsertInWall.fetchAndInsertInWall(FetchDataAndInsertInWall.java:64)
at com.fs.javadbact.ConsumerTest.run(ConsumerTest.java:86)
at java.lang.Thread.run(Unknown Source)
Jan 12, 2014 3:34:57 AM com.fs.javadbact.ConsumerTest run
Пожалуйста, помогите мне, как решить эту проблему и получить надлежащее ResultSet с правильными данными.
У вас есть 'system.out', не произнося никаких результатов, прежде чем вы спросите, и, кроме того, вы используете' .next' три раза позже – nachokk
Я не понимаю, чего вы хотите! вы не можете получить какое-либо значение из своего db, которое в конечном итоге приведет к ошибке, нажав next() (итерация в результатах), если у вас нет –
. Если тот же запрос с тем же аргументом возвращает строки в вашем браузере db инструмент, то это означает, что либо инструмент просмотра db возвращает строки, которые были вставлены, но еще не зафиксированы, либо что код не использует ту же базу данных/схему, что и инструмент просмотра базы данных. –