java在使用resultSet进行JDBC导航时出现问题。next();
下面的代码不起作用,只需将光标一直指向第一条记录,当我尝试用while或for循环替换if语句时,当我单击执行该操作的按钮时,它只会循环到数据表上的最后一条记录
Try {
string host="jdbc:derby://localhost:1527/Employees";
string uName="admin1";
string uPass="admin"
string SQL="SELECT * FROM Workers";
Connection con= DriverManager.getConnection(host, uName, uPass);
Statement stmt=Con.createStatement();
ResultSet=stmt.executeQuery(SQL);
if (rs.next())
{
string fname=rs.getString(first_name);
string lname=rs.getString(last_name):
txtFname.setText(fname);
txtLname.setText(lname);
}
else{
rs.previous();
//throw some sql error here}
}
catch(SQLException err) {
system.out.println(err.getMessage);
}
我如何绕过这个问题,连续地(不是同时地)获得第二、第三、第四到第n条记录
# 1 楼答案
javadoc说-
因此,在某个时间点,
if(rs.next())
返回false,然后执行else部分,光标移动到此结果集中的前一行。然后,当对前一个方法的调用返回false时,光标位于第一行之前。然后它将抛出异常这样做
还有一件事,检查Nivedita的评论并整理错误
# 2 楼答案
查看
ResultSet.next()
{a1},调用rs.next()
一次作为if
条件只会将光标从其起始位置向前移动一个位置。因此,您只能看到第一条记录用
while
或for
循环替换if
语句将导致光标在整个结果集中迭代。然而,当前循环的每次迭代都会用“当前”记录的值覆盖txtFname
和txtLname
的值。为了获取第二、第三、第四条记录等的价值。。。您需要在每次迭代中创建一个新的TextComponent对象。比如说,现在在
while
循环的末尾,这两个列表将包含您的所有记录