麻烦执行Java中的MySQL的delete语句(Trouble executing a MySQL

2019-06-26 14:56发布

我想有这样的代码运行在一个MySQL数据库中删除某条记录,但我得到这个错误:

SQLException: Can not issue data manipulation statements with executeQuery().
SQLState:     S1009
VendorError:  0

这是我目前拥有的代码:

package stringStuff;

import java.io.File;
import java.util.regex.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class REGGY {

    /**
     * @param args
     */

    Connection connection;

    public REGGY() {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception e) {
            System.err.println("Unable to find and load driver");
            System.exit(1);
        }
    }

    private void displaySQLErrors(SQLException e) {
        System.out.println("SQLException: " + e.getMessage());
        System.out.println("SQLState:     " + e.getSQLState());
        System.out.println("VendorError:  " + e.getErrorCode());
    }

    public void connectToDB() {
        try {
            connection = DriverManager
                    .getConnection("the connection works :P");
        } catch (SQLException e) {
            displaySQLErrors(e);
        }
    }

    public void executeSQL() {
        try {
            Statement statement = connection.createStatement();

            ResultSet rs = statement
                    .executeQuery("DELETE FROM content_resource WHERE RESOURCE_ID LIKE '%Hollow%'");



            rs.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            displaySQLErrors(e);
        }
    }

    public static void main(String[] args) {

        String cool = new File(
                "/group/a45dea5c-ea09-487f-ba1c-be74b781efb1/Lessons/Hollowbody 5.gif")
                .getName();

        System.out.println(cool);

        REGGY hello = new REGGY();

        hello.connectToDB();
        hello.executeSQL();

        // TODO Auto-generated method stub

    }

}

我能够运行SELECT *查询没有问题,但是当我尝试和运行删除查询它不会让我。 我已经跑在MySQL工作台这个命令和它的作品,它只是当我使用Java不起作用。

Answer 1:

您使用executeUpdate()为替代。

executeQuery()仅适用于返回数据的语句。 executeUpdate是那些不会返回日期(更新,插入,删除,我相信的东西,如添加/删除表,约束,触发器等以及)。



Answer 2:

更改

ResultSet rs = statement.executeQuery("DELETE FROM content_resource WHERE RESOURCE_ID LIKE '%Hollow%'");

int deletedRows = statement.executeUpdate("DELETE FROM content_resource WHERE RESOURCE_ID LIKE '%Hollow%'");

正如其他人所说,的executeQuery()应该用于返回数据,通常是SELECT语句的语句。 对于插入/更新/删除语句,你应该使用的executeUpdate()来代替。



Answer 3:

要执行DML语句(INSERT,创建或删除),您必须使用executeUpdate() 不是executeQuery()



Answer 4:

使用executeUpdate代替executeQuery 。 JDBC是郁闷,因为delete语句不返回记录集,为executeQuery预期。



Answer 5:

使用execute代替executeQuery

据我所知, executeQuery必须,如果你正在执行一个返回结果查询中使用( select为例)。



Answer 6:

确保您已设置其权限DELETE语句。 某些用户将具有不允许出于安全考虑,某些命令。



文章来源: Trouble executing a MySQL delete statement in Java
标签: java mysql jdbc