java - MySQL、Java – 错误

标签 java mysql select

我创建了发送命令“SELECT * FROM cars;”的方法到我的MySQL数据库。 “汽车”是我的表,我想向用户显示数据库的内容,但是当我尝试调用该方法时它会给我输入一些错误。

主要代码:

public class main {

    public static void main(String[] args) {
        String dbHost="localhost";
        String dbDatabase="cars";
        String dbUser = "root";
        String dbPassword = "";
        int Select;

        Scanner input = new Scanner(System.in);

        Cars cars = new Cars();
        CarDAO carDAO = new CarDAO();


        System.out.println("Choose option: ");
        System.out.println("1. Create a new car");
        System.out.println("2. Update entry of the car");
        System.out.println("3. Sold car");
        System.out.println("4. View all cars that are for sale ");
        System.out.println("5. Search for cars");

        Select = input.nextInt();

        switch (Select){
            case 1: {
                carDAO.createCar(cars);
                break;
            }
            case 2:{
                carDAO.changeEntry(cars);
                break;
            }
            case 3:{
                carDAO.soldCar(cars);
                break;
            }
            case 4:{
                carDAO.showCars(cars);
                break;
            }
            case 5:{
                carDAO.search(cars);
                break;
            }
        }

        try {
            // register driver
            Class.forName("com.mysql.jdbc.Driver");
            // Make Connection Url
            String connectionUrl = "jdbc:mysql://" + dbHost
                        + "/" + dbDatabase
                        + "?user=" + dbUser
                        + "&password=" + dbPassword;
            //open Connection
            Connection conn = DriverManager.getConnection(connectionUrl);
            // Code to create sql and run it will go here
            // create SQL
            String sql = carDAO.sql;
            // prepare Statement
            PreparedStatement ps = conn.prepareStatement(sql);
            // execute SQL
            ps.executeUpdate();

            // close connection
            conn.close();
        }catch (ClassNotFoundException cnfe){
            throw new RuntimeException(cnfe);
        }catch (SQLException sqle) {
        throw new RuntimeException(sqle);
        }
        }

}

执行代码:

public void showCars (Cars cars){
    sql = "SELECT * FROM cars;";
}

错误信息:

Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException: Can not issue executeUpdate() for SELECTs
    at main.main(main.java:82)
Caused by: java.sql.SQLException: Can not issue executeUpdate() for SELECTs
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2416)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at main.main(main.java:75)

最佳答案

引用Javadoc of executeUpdate() :

Executes the SQL statement in this PreparedStatement object, which must be an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE

您的查询是 SELECT,因此这将失败。正如错误信息所说:

Can not issue executeUpdate() for SELECTs

调用executeQuery()相反。

关于java - MySQL、Java – 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024248/

相关文章:

php - 检查表数据是否已在 firebug 中被操作的最简单方法是什么

mysql - Mysql中如何合并数据到临时表中

java - 获取给定值并使用映射器在 DynamoDB 中搜索它

mysql - SQL 将 a 引用到 b,将 b 引用到 a

java - 构建调试 apk 时无法合并 dex 错误

java - Class Not Found 异常,即使在 Mac OS X 中放入 jar 文件并设置类路径之后

MySQL/MariaDB - 查询通过引用表在表中搜索

java - 为什么 TOAD 比我的 java 代码更快?

java - 在Java中提取XML属性(ISBNDB)

java - ResultSet——它是什么样的对象?