Java - 更新查询不是每次都有效

时间:2017-03-18 19:00:16

标签: java mysql jdbc xampp netbeans-8

此查询在开始时有效,但当我一次又一次更新它时它停止工作。我正在研究netbeans并使用xampp服务器 还有一个奇怪的事情,现在当值得到更新时,最后两行和最后一列保持不变。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

    String val = txt_val.getText();
    String col = txt_col.getText();
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost/net", "root", "");

        pstmt = conn.prepareStatement(
        "update userdetail set 
            name =  ?
        , username =  ? where  name =  ? AND  username =  ? ")

        pstmt.setString(1, val);
        pstmt.setString(2, val);

        pstmt.setString(3, col);
        pstmt.setString(4, col);

        int i = pstmt.executeUpdate();
        if (i > 0) {
            JOptionPane.showMessageDialog(null, "done");
        } else {
            JOptionPane.showMessageDialog(null, "query failed");
        }

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }

}

1 个答案:

答案 0 :(得分:1)

  

此查询在开始时工作,但是当我一次又一次地更新它时   它停止了工作

这是逻辑,问题出在您的查询中:

<强>问题

name = "name" and username = "username

假设您的数据库中的name = "name1" and username = "username1"“ 新值.. set name = "name1", username = "username1" where name = "name" AND username = "username"

首次更新

.. set name = "name2", username = "username2" where name = "name" AND username = "username"

第二次更新

如果再次重复,您将使用旧的名称和用户名值重复查询:

name = "name" AND username = "username"

名称和用户名是第一次更改,数据库中没有值,如下所示:update ... where id = something

<强>解决方案

在您更新之前,您必须从数据库中获取信息,以便您可以毫无问题地更新记录。

最佳做法是使用不更改的主键更新记录,例如:

{{1}}

希望你明白我的意思。