使用SQL在Java中删除记录

时间:2013-08-12 13:04:55

标签: java mysql

更新:我尝试了以下建议,但仍然无效。当尝试employeeid = 1时,它确实说成功,但是进入mysql命令行,它仍然显示那里的记录。

我尝试查看不同的帖子和我的插件有效但由于某种原因我无法使用删除功能。

我正在尝试删除记录但仍然出错。运行mysql& NetBeans的。请帮忙,谢谢。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:

    try {

        statement.executeUpdate("INSERT INTO `abcinc`.`employees`"
                + "(`EmployeeID`,`First_Name`,`Last_Name`,`Birthday`,`Dept_Name`)VALUES("
                + "'" + jTextField1.getText() + "'," 
                + "'" + jTextField2.getText() + "'," 
                + "'" + jTextField3.getText() + "'," 
                + "'" + jTextField4.getText() + "',"
                + "'" + jTextField5.getText() + "');");

        JOptionPane.showMessageDialog(null, "Successful Update!!!", "Database Messages",
                      JOptionPane.OK_OPTION);
    }
    catch(SQLException error){
        JOptionPane.showMessageDialog( null, error.getMessage(), "Database Messages",
                      JOptionPane.ERROR_MESSAGE );
    }
}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    try {

        statement.executeUpdate("DELETE FROM `abcinc`.`employees`"
                + "WHERE (`EmployeeID`,`First_Name`,`Last_Name`,`Birthday`,`Dept_Name`)VALUES("
                + "'" + jTextField1.getText() + "'," 
                + "'" + jTextField2.getText() + "'," 
                + "'" + jTextField3.getText() + "'," 
                + "'" + jTextField4.getText() + "',"
                + "'" + jTextField5.getText() + "');");

        JOptionPane.showMessageDialog(null, "Successful Update!!!", "Database Messages",
                      JOptionPane.OK_OPTION);
    }
    catch(SQLException error){
        JOptionPane.showMessageDialog( null, error.getMessage(), "Database Messages",
                      JOptionPane.ERROR_MESSAGE );
    }
}                                        

5 个答案:

答案 0 :(得分:1)

删除不遵循该语法。

尝试类似

的内容
DELETE FROM mytable WHERE mycolumn='X' AND myothercolumn='Y';

see docs here

答案 1 :(得分:0)

在哪里(EmployeeIDFirst_NameLast_NameBirthdayDept_Name)价值

需要成为

等条件

WHERE EmployeeID = 1

其次,

  • “'”+ jTextField1.getText()+“',”             +“'”+ jTextField2.getText()+“',”             +“'”+ jTextField3.getText()+“',”             +“'”+ jTextField4.getText()+“',”             +“'”+ jTextField5.getText()+

是构建查询的一种非常糟糕的方式,因为它让您对SQL注入攻击持开阔态度。

您应该使用带参数的预准备语句,然后插入参数。

PreparedStatement ps = null;

try {

ps = conection.prepareStatement("insert into mytable (ID) values (?)");

ps.setString(1, jTextField5.getText());

ps.execute();

答案 2 :(得分:0)

我认为删除数据sql语法就像'DELETE FROM TABLE_NAME WHERE COLUMN =?',它不包含'values'

答案 3 :(得分:0)

您的SQL删除语句不正确。

我猜员工编号在您的表格中是唯一的,因此您应该尝试

  

DELETE FROM yourtable WHERE EmployeeID ='someid';

答案 4 :(得分:0)

VALUES子句仅用于insert语句。

在WHERE子句中,您必须使用单个谓词,如

WHERE EmployeeID = ...
  AND First_Name = ...

您不必指定要删除的行的al属性,只需指定识别行所需的属性。