關(guān)于while (rs.next()) 與 if(rs.next())的區(qū)別
Posted on 2010-10-11 16:36 Elvin Lee 閱讀(1730) 評論(0) 編輯 收藏while是用來做循環(huán)輸出的 換句話說 就是"如果結(jié)果集里還有值" 沒有則停止循環(huán) 這個一般在JSP做顯示用
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時,游標(biāo)最先是指向第一條記錄前的位置,所以第一次rs.next后,游標(biāo)指向的正好是第一條記錄(如果有的話)
4、要判斷rs的結(jié)果是否為空,只要使用一次rs.next方法就行了,如果它返回為false,則證明rs的結(jié)果為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();
}
//}
}
while(rs.next()) //就是 將rs全部進(jìn)行讀取
if(rs.next()) //rs進(jìn)行讀取一次 判斷是否有數(shù)據(jù)