关于对if(rs.next())的一点说明!!
2005-05-23 10:04
288 查看
好像简单的事情搞复杂了,首先明确几点:
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();
}
//}
}
相关文章推荐
- 关于if(rs.next())
- 遇到的关于ifstream::eof()的一点小问题
- 关于C语言中的main函数的一点说明
- 关于delphi Com+调用C# DLL的一点说明
- 关于显卡的一些参数说明,告诉你如何分辨哪个好一点,哪个烂一点。
- 关于memcpy和memmove的一点重要说明
- 寻找丑数及关于程序优化效率的一点说明
- <iOS>关于viewWithTag的一点说明
- fcitx 关于多语言,不同编码的一点说明;同时也可以用于解决fcitx不能输入问题
- 关于rs.isAfterLast和rs.next的用法
- 关于scanner输入的说明,nextLine、nextInt、next的使用说明、类数组定义的说明
- 关于《0 bug ---- C/C++商用工程之道》的一点说明
- 关于2007年未更新的一点说明
- 关于oracle递推查询的一点知识点说明
- 寻找丑数及关于程序优化效率的一点说明
- 关于”理爱德“(LinuxAid)商标的一点说明
- 关于内核编译的一点说明
- 关于might_sleep的一点说明---CONFIG_DEBUG_ATOMIC_SLEEP【转】
- 关于might_sleep的一点说明
- <iOS>关于viewWithTag的一点说明