我的JDBC的rs.getString(“column_name”)有一些问题,基本上它不会分配从查询结果中收到的值,我有一个字符串 ris ,它应该得到行名称来自rs.getString,为了我正在使用 ris 的问题的简单性,我的查询只返回一行。这是代码:
//It returns null, or any other values I use to initialize the variable
String ris=null;
q = "SELECT DISTINCT nome FROM malattia WHERE eta='" + age + "' AND sesso='" + sexstr + "' AND etnia='" + etniastr + "' AND sintomi IN(" + tes + ")";
ResultSet rs = st.executeQuery(q);
if (!rs.last()) {
ris = "no";
}
else {
//This is the place where I'm having problems
while(rs.next()){
//ris is supposed to get the name of the query result having column "nome"
ris=rs.getString("nome");
}
}
conn.close();
} catch (Exception e) {
ris = e.toString();
}
return ris;
我简化了代码,因此很容易关注问题所在。 提前谢谢!
答案 0 :(得分:6)
if (rs.last())
while (rs.next())
这不起作用,因为在您致电last
后,您就在最后一行,next
将始终返回false
(它会返回true
并且如果剩下一行,请带你到下一行。
请使用带有绑定变量的预准备语句!
最后关闭ResultSet和Connection(或使用Jakarta Commons DbUtils)。
答案 1 :(得分:1)
试试这个,只需删除if条件中的rs.last()
调用..我同意@Thilo关于使用预准备语句。
String ris=null;
q = "SELECT DISTINCT nome FROM malattia WHERE eta='" + age + "' AND sesso='" + sexstr + "' AND etnia='" + etniastr + "' AND sintomi IN(" + tes + ")";
ResultSet rs = st.executeQuery(q);
rs.first(); // go to first record.
//This is the place where I'm having problems
while(rs.next()){
//ris is supposed to get the name of the query result having column "nome"
ris=rs.getString("nome");
}
}
conn.close();