1

更新:我尝试了以下建议,但仍然无法正常工作。尝试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 );
    }
}                                        
4

5 回答 5

2

删除不遵循该语法。

尝试类似的东西

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

在此处查看文档

于 2013-08-12T13:09:19.903 回答
0

其中 ( EmployeeID, First_Name, Last_Name, Birthday, Dept_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();
于 2013-08-12T13:10:28.740 回答
0

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

于 2013-08-12T13:10:56.760 回答
0

您的 SQL 删除语句不正确。

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

从你的表中删除 EmployeeID='someid';

于 2013-08-12T13:11:38.563 回答
0

VALUES 子句仅用于插入语句。

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

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

您不必指定要删除的行的所有属性,而只需指定标识行所需的属性。

于 2013-08-12T13:13:20.853 回答