SQL表列值在2之后不再增加?

问题描述 投票:0回答:1

以下代码应递增 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”列的当前值,递增它,并将文本字段的文本设置为更新后的值。请帮忙

java mysql netbeans
1个回答
0
投票

首先,你正在做的是获取所有数据,因为

"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数据类型相对应。

© www.soinside.com 2019 - 2024. All rights reserved.