错误描述:
在JAVA程序中查询SQL Sever时,有时会出现明明数据库中存在数据,但是查询解决为空,错误代码为:
com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行。
错误代码:
相关的表如下:
String sql="select * from test where TID=1;";
System.out.println(sql);
ResultSet rs1;
rs1=db.executeQuery(sql);
try{
String sss=rs1.getString("testName");
System.out.println("testName="+sss);
}
catch (SQLException e1) {System.out.println(e1);}
System.out.println(7);
db.sqlclose();
在这种情况下查询结果为null,错误为上面红色的错误。
正确代码:
将上面的代码修改如下:
String sql="select * from test where TID=1;";
System.out.println(sql);
ResultSet rs1;
rs1=db.executeQuery(sql);
try{
if(rs1.next()){
String sss=rs1.getString("testName");
System.out.println("testName="+sss);
}
}
catch (SQLException e1) {System.out.println(e1);}
System.out.println(7);
db.sqlclose();
此时可以正常查询到数据,在输出框中的输出为:testName=11
对这种现象的解释:
总之,用一句话概括就是:上面的两段代码都正确从数据库中查询到了结果,但是错误代码在ResultSet中读取值时,读取的是index为0的前一个记录,即空记录,必须通过.next()方法将index+1,使之指向index为0,即ResultSet中第一条记录,才可以正确获取查询结果,这正是正确代码所表达的内容。