关于对if(rs.next())的一点说明!!
好像简单的事情搞复杂了,首先明确几点:
1、rs = stmt.exeQuery(sql)后,rs肯定不会为null,注意,是rs对象不会为null,而不是其包含的result
2、既然rs不会为null,所以在rs = stmt.exeQuery(sql)后,使用while(rs.next())或者if(rs.next())时就不用判断rs != null;
3、rs.next时,游标最先是指向第一条记录前的位置,所以第一次rs.next后,游标指向的正好是第一条记录(如果有的话)
4、要判断rs的结果是否为空,只要使用一次rs.next方法就行了,如果它返回为false,则证明rs的结果为null
所以最终的代码可以写为:
public void run() {
/** 读取数据库** */
DbTestConn conn = new DbTestConn();
String sql = "select * from mo_info where mo_state = '1'";
ResultSet rs = conn.exeQuery(sql);
//while (!isNull) {
try {
while (rs.next()) {
tr.setId(rs.getInt(1));
tr.setUser(rs.getString(2));
tr.setPwd(rs.getString(3));
//isNull = false;
}
} catch (SQLException e) {
//isNull = true;
e.printStackTrace();
}
//}
}
1、rs = stmt.exeQuery(sql)后,rs肯定不会为null,注意,是rs对象不会为null,而不是其包含的result
2、既然rs不会为null,所以在rs = stmt.exeQuery(sql)后,使用while(rs.next())或者if(rs.next())时就不用判断rs != null;
3、rs.next时,游标最先是指向第一条记录前的位置,所以第一次rs.next后,游标指向的正好是第一条记录(如果有的话)
4、要判断rs的结果是否为空,只要使用一次rs.next方法就行了,如果它返回为false,则证明rs的结果为null
所以最终的代码可以写为:
public void run() {
/** 读取数据库** */
DbTestConn conn = new DbTestConn();
String sql = "select * from mo_info where mo_state = '1'";
ResultSet rs = conn.exeQuery(sql);
//while (!isNull) {
try {
while (rs.next()) {
tr.setId(rs.getInt(1));
tr.setUser(rs.getString(2));
tr.setPwd(rs.getString(3));
//isNull = false;
}
} catch (SQLException e) {
//isNull = true;
e.printStackTrace();
}
//}
}