使用SQL在Java中删除记录

使用SQL在Java中删除记录,java,mysql,Java,Mysql,更新:我尝试了以下建议,但仍然不起作用。当尝试employeeid=1时,它确实表示成功,但是进入mysql命令行时,它仍然显示那里的记录 我试着看不同的帖子,我的插入工作,但由于某种原因,我无法删除功能的工作 我正试图删除一条记录,但不断出现错误。运行mysql和netbeans。请帮忙,谢谢 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

更新:我尝试了以下建议,但仍然不起作用。当尝试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 );
    }
}                                        

Delete不遵循该语法

试试像这样的东西

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

其中(
员工ID
生日
部门名
)值

需要是一个条件,例如

其中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();

我认为delete data sql语法类似于“delete FROM TABLE_NAME WHERE COLUMN=?”,它不包含“values”

您的sql delete语句不正确

我想员工编号在您的表格中是唯一的,所以您应该试试

从EmployeeID='someid'所在的表中删除


VALUES子句仅在insert语句中使用

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

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

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

您使用的
delete
的SQL语法不正确(对于delete,没有什么比
value
更合适的了)。谢谢大家。这段代码是我的教授写的。我试图跟着它,但不明白。用户可以在其中输入信息的字段为空。主键是输入人员的SS(员工id)。我将尝试以下建议您的教授需要使用准备好的语句。private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){//TODO在此处添加您的处理代码:try{statement.executeUpdate(“从
abcinc
员工中删除)”+“WHERE employeeid=1”)所以我猜它会/应该是这样的?即使WHERE子句不匹配记录,AFAIK DELETE也总是成功返回(语法正确时)。谢谢,现在我不想将其更改为preparedstatement,因为我还不太熟悉java。我宁愿将其保留为我的“insert”语句行得通。我将尝试where employeeID=1。同样,当我使用employeeID=1时,“1”来自何处?谢谢,我尝试了这个,但由于某种原因没有起作用:statement.executeUpdate(“从
abcinc
员工
”+“where'employeeID'=jTextField1.getText()”)“可能是您引用的值。我建议阅读您收到的错误消息和我的答案中发布的文档。此外,尝试不使用
jtextfield
集成,只需先进行查询即可。您的引用是错误的,如果您一次只关注一点就可以了。谢谢,我尝试过了,但出于某种原因,它不起作用。”执行更新(“从
abcinc
”+“其中'employeeID'=jTextField1.getText()”);请注意,您将jTextField1.getText放在“”中,使其成为字符串而不是函数调用谢谢,我尝试过了,但出于某种原因,它没有接受语句。执行更新(“从
abcinc
employees
“+”中删除,其中'employeeID'=jTextField1.getText()”;