尝试更新我的表,而不是1行更新所有行得到更改

时间:2013-08-27 12:39:05

标签: java

正如标题所述,我正在尝试编辑现有(本地)MySQL服务器中的字段。 添加和删​​除行就像魅力一样,但当我尝试使用此代码编辑它们时:

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

   try{
       String edit1 = lNaam.getText();
       String edit2 = lEmail.getText();
       String edit3 = lAdres.getText();
       String edit4 = lPlaats.getText();
       String edit5 = lPostcode.getText();
       String edit6 = lTelefoon.getText();
       String edit7 = lBedrijfsNaam.getText();

       String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR";
       preparedStatement=connect.prepareStatement(sql);
       preparedStatement.execute();
    JOptionPane.showMessageDialog(null, "Updated");

   }catch(SQLException | HeadlessException e){
   JOptionPane.showMessageDialog(null, e);
   }
    Update_table();

}   

编辑:我忘了这么说,KL_NR字段是一个AUTO_INCREMENT字段,支持同样的东西,我没有想法把它放在哪里

它不断编辑表格中的所有行,而不仅仅是1。

http://imgur.com/6fIhrQw

此代码用于选择行,删除等:

    private void Table_customerMouseReleased(java.awt.event.MouseEvent evt) {                                             
  try{

    int row = Table_customer.getSelectedRow();
    String TClick = (Table_customer.getModel().getValueAt(row, 0).toString());
    String sql="select * from customers where KL_NR='"+TClick+"'";
    preparedStatement=connect.prepareStatement(sql);
    resultSet=preparedStatement.executeQuery();
    if(resultSet.next()){
        String add1 =resultSet.getString("naam");
        lNaam.setText(add1);
        String add2 =resultSet.getString("Email");
        lEmail.setText(add2);
        String add3 =resultSet.getString("Adres");
        lAdres.setText(add3);
        String add4 =resultSet.getString("Plaats");
        lPlaats.setText(add4);
        String add5 =resultSet.getString("Postcode");
        lPostcode.setText(add5);
        String add6 =resultSet.getString("Telefoon");
        lTelefoon.setText(add6);
        String add7 =resultSet.getString("Bedrijfsnaam");
        lBedrijfsNaam.setText(add7);
    }



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

这是我的删除代码:

private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {                                       
    String sql ="delete from test.customers where NAAM=? ";
    try {
        // TODO add your handling code here:
        preparedStatement = connect.prepareStatement(sql);

        preparedStatement.setString(1, lNaam.getText());
        preparedStatement.executeUpdate();
        JOptionPane.showMessageDialog(null, "Deleted");

    } catch (SQLException ex) {
        Logger.getLogger(DataView.class.getName()).log(Level.SEVERE, null, ex);
    }
    Update_table();
}                

我希望你能帮助我。 :S

3 个答案:

答案 0 :(得分:3)

更新你应该调用executeUpdate方法

String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR";
       preparedStatement=connect.prepareStatement(sql);
       preparedStatement.executeUpdate();

并且你的sql字符串不完整意味着你必须完成条件 更新表集名称='test',其中ID = 5;

这不是使用PreparedStatement的正确方法。

使用这种方式

String sql="update customers set naam=?,email=?....."

preparedStatement=connect.prepareStatement(sql);
preparedStatement.setString(1,edit1);
preparedStatement.setString(2,edit2);
preparedStatement.executeUpdate();

答案 1 :(得分:0)

您未在WHERE

中提供条件
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR";

应以

之类的结尾
..."+edit7+"'where /* CONDITION HERE TO UPDATE THE WANTED ROW*/;

如果选择的条件有效,请使用相同的更新,除非有除选定行之外的其他条件以了解要更新的内容。

int row = Table_customer.getSelectedRow();
String TClick = (Table_customer.getModel().getValueAt(row, 0).toString())
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR='"+TClick+"'";

答案 2 :(得分:0)

你的Update语句必须像这样

 String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR="+/*some value*/;