此查询在开始时有效,但当我一次又一次更新它时它停止工作。我正在研究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);
}
}
答案 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}}
希望你明白我的意思。