-3

当我尝试更新数据库中的现有字段时,我在添加的屏幕截图中收到错误消息 问题是什么

private void cmdUpdateMouseClicked(java.awt.event.MouseEvent evt) {                                       
   String sql="UPDATE std set ADM_NO=?,Form=?,Student=?,Parent=?,Contact=?";


    try {
       ps=conn.prepareStatement(sql);
              ps.setString(1, txtadm.getText());
              ps.setString(2, txtform.getText());
              ps.setString(3, txtsname.getText());
               ps.setString(4, txtpname.getText());
              ps.setString(5, txtmobileno.getText());


          ps.executeUpdate();

错误截图

4

5 回答 5

4

您错过WHERE了 SQL 中的子句,它会更新整个表。对于更新,它通常需要主键,例如WHERE primary_key_column=id

于 2013-10-11T13:20:01.930 回答
0

看起来,您正在尝试将值设置为具有 PRIMARY KEY 的字段,这意味着它不能具有重复值,应该是唯一的。

于 2013-10-11T13:16:09.467 回答
0

看起来您的代码正在尝试更新该表中的每一行:

UPDATE std set ADM_NO=?,Form=?,Student=?,Parent=?,Contact=?

您需要使用 where 子句来定位要更新的行。我猜 ADM_NO 是主键,查询正在尝试更新所有行以具有相同的主键。

于 2013-10-11T13:20:44.090 回答
0

您正在尝试将表的主键更新为已存在的值。

当您在没有WHERE子句的情况下进行更新时,这意味着您将更新应用于表上的所有行,但这不起作用,因为您将一次又一次地将主键设置为相同的值。

找出你的主键是什么。不确定您使用什么工具来管理 mySQL 表,但您可以使用

SHOW COLUMNS FROM std

我猜你的主键是ADM_NO

因此,您可能需要编写如下代码:

...
String sql="UPDATE std set Form=?,Student=?,Parent=?,Contact=? WHERE  ADM_NO=?";
...
          ps.setString(1, txtform.getText());
          ps.setString(2, txtsname.getText());
          ps.setString(3, txtpname.getText());
          ps.setString(4, txtmobileno.getText());
          ps.setString(5, txtadm.getText());

只是猜测

于 2013-10-11T13:20:50.100 回答
-1

您好,没有“Where”子句,这太明显了,文件上有一个唯一的键。

于 2013-10-11T13:19:15.287 回答