2

为什么这对我不起作用?我不断收到错误:

java.sql.SQLException: Can not issue data manipulation statements with executeQuery().

我的代码:

private void speler_deleteActionPerformed(java.awt.event.ActionEvent evt) {
    int row = tbl_spelers.getSelectedRow();
    int SpelerID = (int) tbl_spelers.getValueAt(row, 0);
    Speler speler = new Speler();

    try {
    DBClass databaseClass = new DBClass();
    Connection connectie = databaseClass.getConnection();
    // NOG ONVEILIG - WACHTEN OP DB SELECT IN DBCLASS!!!
    String deleteQry = "DELETE FROM `Speler` WHERE SpelerID = " + SpelerID + ";";
    ResultSet rs = databaseClass.GetFromDB(deleteQry);
    } catch (SQLException ex) {
        Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
    }
}
4

4 回答 4

4

你必须excuteUpdate() 使用删除

的文档 excuteUpdate()

执行给定的 SQL 语句,它可能是 INSERT、UPDATE 或 DELETE 语句或不返回任何内容的 SQL 语句,例如 SQL DDL 语句。

然而executeQuery()

执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

于 2013-10-28T14:57:56.820 回答
0

您需要使用执行查询executeUpdate()

此外,您只需要对您的 String 进行轻微调整,deleteQry如下所示:

String deleteQry = "DELETE FROM Speler WHERE SpelerID = " + SpelerID;

希望这可以帮助...

于 2013-10-28T15:11:10.823 回答
0

jdbc的executeQuery()方法是选择记录,可以使用executeUpdate()进行更新操作。请参阅文档了解每种方法的目的/意图:

boolean execute()

执行此 PreparedStatement 对象中的 SQL 语句,该对象可以是任何类型的 SQL 语句。

ResultSet executeQuery()

在此 PreparedStatement 对象中执行 SQL 查询,并返回查询生成的 ResultSet 对象。

int executeUpdate()

执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL INSERT、UPDATE 或 DELETE 语句;或不返回任何内容的 SQL 语句,例如 DDL 语句。

于 2013-10-28T14:58:24.163 回答
0

首先,您需要excuteUpdate()用于删除,然后

String deleteQry = "DELETE FROM `Speler` WHERE SpelerID = " + SpelerID + ";";

从查询中删除semi-colon和包含表名“Speler”的“`”。

于 2013-10-28T14:59:51.893 回答