#java #prepared-statement #resultset
Вопрос:
В цикле while он не заходил внутрь. Но запись существует в базе данных. Почему в этом случае результирующий набор возвращает значение false?
String sql = "SELECT * FROM tablename where name=?"; PreparedStatement smt = con.preparestatement(sql); smt.setString(1, "john"); ResultSet rs = smt.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); Listlt;Objectgt; colValues = new ArrayListlt;Objectgt;(); while(rs.next()) { for(int i=1;ilt;=columnCount;i ) { name = rsmd.getColumnName(i); Object name1 = rs.getObject(name); colValues.add(name1); } }
Комментарии:
1. Похоже, у вас есть некоторые сомнения или путаница в отношении работы SQL. Это неправильное использование для поиска имени столбца в SQL-запросе. Скорее, вы должны утверждать, что конкретный уже известный столбец имеет определенное строковое значение. Кроме того, вы ссылаетесь на результирующий набор, вызываемый
rs1
в вашем коде Java, но он нигде не определен.2. @TimBiegeleisen Извините за опечатку. Это правильный фрагмент. Ты можешь провести меня сюда?
3. Если ваш код действительно никогда не входит в
while
цикл, то записей с именем Джон нет.4. @TimBiegeleisen, Но он существует в базе данных.
5. Имейте в виду, что сравнение строк SQL чувствительно к регистру, поэтому
"John"
это не то же самое, что"john"
.