【发布时间】:2016-03-29 15:57:32
【问题描述】:
同事传给我一些代码,运行代码时出现问题。这是其中的一部分
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);
}
这总是打印为 false 购买的。我把那部分改成了这样:
while (rs.next()) {
//some code
if(rs.getInt("purchased") == 1) purchased = true;
print(" purchased:" + purchased);
}
现在它可以完美运行了。
注意: 我的 ResultSet 只能有 1 条记录。而在 DB purchased 中是 bit 类型,所以除了 0/1 之外没有其他值。
这两种写法有什么区别?据我所知,两者应该以相同的方式工作。
【问题讨论】:
-
(1) 如果一个值可以是
0或1,那么它实际上是Java 中的一个布尔值。 (2)如果rs只有1条记录,while循环不会运行一次吗?循环会运行多次吗?
标签: java boolean variable-assignment