以下代码应递增 SQL 表列“num”值,并将文本字段的文本设置为递增后的“num”值。但是当它达到2时,值就不再增加了?
int num = 1;
try {
Statement stm = Database.myCon().createStatement();
String sql = ("Select * from rent");
ResultSet rs = stm.executeQuery(sql);
if (rs.next()) {
int rentNum = rs.getInt("num");
rentNum++;
String rentNumToString = String.valueOf(rentNum);
stm.executeUpdate("INSERT INTO rent(num)" + "VALUES ('" + rentNum + "')");
transactionsNum.setText(rentNumToString);
} else {
stm.executeUpdate("INSERT INTO rent(num)" + "VALUES ('" + num + "')");
String numToString = String.valueOf(num);
transactionsNum.setText(numToString);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, e.getMessage());
}
代码应该获取“num”列的当前值,递增它,并将文本字段的文本设置为更新后的值。请帮忙
首先,你正在做的是获取所有数据,因为
"Select * from rent"
然后你使用了if (rs.next())
你应该使用while (rs.next())
,你可以想象rs是一个数据数组,所以如果你使用if语句你只会检查第一行数据。
其次,
"INSERT INTO rent(num)" + "VALUES ('" + rentNum + "')"
应该是"UPDATE rent SET num = '" + rentNum + "' WHERE rent.<pk> = <primarykey>"
,在<pk>
处插入你表的主键,然后使用<primarykey>
找到rs.getString("<pk>");
,如果你不想重复数据那么我建议这样做。
第三,在用Java编写之前,请确保SQL查询都在SQL工作台上正常执行,并且所有数据类型都是正确的并且与Java数据类型相对应。