我的同事传给我一些代码,当我运行代码时会出现问题.这是它的一部分
boolean purchased = false; conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword); stmt = conn.createStatement(); String sql = new StringBuilder().... // some query rs = stmt.executeQuery(sql); while (rs.next()) { //some code purchased = rs.getInt("purchased") == 1; print(" purchased:" + purchased); }
这总是打印购买为假.我改变了这个部分:
while (rs.next()) { //some code if(rs.getInt("purchased") == 1) purchased = true; print(" purchased:" + purchased); }
现在它完美无缺.
注意: 我的ResultSet只能有1条记录.并且在购买的 DB中是位类型,因此不能有除0/1之外的其他值.
这两种写作方式有什么区别?我知道两者应该以同样的方式工作.
这两种写作方式有什么区别?我知道两者应该以同样的方式工作.
不,绝对不是.在第一段代码中,如果rs.getInt("purchased")
返回的值不是 1,则赋值为false
.
在你的第二段代码中,一旦purchased
设置为true
,它将保持true
循环的其余部分.
因此,假设你的第一行具有用于值1 purchased
,和第二个行具有2的值,然后在第一块代码的变量将变得true
然后false
,但在第二个片的代码的变量将被设置为true
在第一次迭代,然后在第二次迭代中没有改变.