【问题标题】:why cant i "update" data to the database from netbeans interface.为什么我不能从 netbeans 接口将数据“更新”到数据库。
【发布时间】:2017-09-22 13:26:11
【问题描述】:

<html>
<body>
<pre>





geting a error when click on the update button as : "com.microsoft.sqlserver.jdbc.SQLServerException: Violation of PRIMARY KEY constraint 'PK_customer'. Cannot insert duplication key in object 'dbo.Customer'. The duplication key value is ()."   



private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
       try{
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url="jdbc:sqlserver://localhost:1433;databaseName=77OOP062;user=sa;password=hnd";
        Connection conn= DriverManager.getConnection(url);


String value1=jTextFieldCustomerName.getText();
String value2=jTextFieldHomeAddress.getText();
String value3=jTextFieldNIC.getText();
String value4=jTextFieldEmailAddress.getText();
String value5=jTextFieldContactNo.getText();
String value6=jLabel7.getText();


pst=conn.prepareStatement("update Customer set CustomerName=?,HomeAddress=?,NIC=?,EmailAddress=?,ContactNo=?,InvoiceNo=?"); 
pst.setString(1,value1);
pst.setString(2,value2);
pst.setString(3,value3);
pst.setString(4,value4);
pst.setString(5,value5);
pst.setString(6,value6);
pst.executeUpdate();
              
              JOptionPane.showMessageDialog(null, "Güncellendi");



}catch(Exception e){;

        JOptionPane.showMessageDialog(null, e);


}
  distable();
       
    }   






</pre>
</body>
</html>

单击更新按钮时出现错误:“com.microsoft.sqlserver.jdbc.SQLServerException:违反主键约束‘PK_customer’。无法在对象‘dbo.Customer’中插入重复键。重复键值是 ()。”

【问题讨论】:

  • 客户表的主键是哪一列
  • WHERE 语句中的 WHERE 子句在哪里?这种方式尝试设置所有行...
  • 第三列是主要的,它是网卡..
  • 应该需要从声明中将设置更改为 WHERE
  • 你为什么要更新主键??

标签: java sql-server netbeans


【解决方案1】:

由于您的update 语句不包含where 子句,因此您的语句会尝试更新表中的所有行,并且由于您已将主键列NIC 放在更新语句中,它也会被覆盖但是在第一次写入之后,rdbms 意识到您在 NIC 列中放置了相同的值(这是不允许的,因为 pk 必须是唯一的)并因此给您错误。

使用where 子句过滤您想要更新的行并且不更新pk。

【讨论】:

  • 实际上他的数据甚至没有覆盖它什么都不做。当我从界面中选择显示的日期时。它没有显示在界面“输入字段”中。当我单击更新时,它显示 ::: 在单击更新按钮时出现错误:“com.microsoft.sqlserver.jdbc.SQLServerException:违反主键约束‘PK_customer’。无法在对象‘dbo.Customer’中插入重复键'。复制键值为()。"
  • 好的,我明白了。但是你能告诉我 WHERE 应该等于什么吗,因为我已经将字段名称分配到语句中
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
相关资源
最近更新 更多