Java:无法使用;使用「;来自MySQL的关键字?

Java:无法使用;使用「;来自MySQL的关键字?,java,mysql,mysql-workbench,Java,Mysql,Mysql Workbench,我有两个SQL文件: query1.sql SELECT * FROM laptop_store.gpu; query2.sql USE laptop_store; SELECT * FROM gpu 在MySQL Workbench 8.0 CE中执行这两项操作将显示相同的结果: 当我从两个SQL代码中复制所有内容并在java中运行时 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Re

我有两个SQL文件:

query1.sql

SELECT * FROM laptop_store.gpu;
query2.sql

USE laptop_store;
SELECT * FROM gpu
在MySQL Workbench 8.0 CE中执行这两项操作将显示相同的结果:

当我从两个SQL代码中复制所有内容并在java中运行时

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class NewClass {
    static String queryString1 = "SELECT * FROM laptop_store.gpu";

    static String queryString2 = "USE laptop_store;\n" +
                                 "SELECT * FROM gpu";

    public static void main(String[] args) {
       try{      
          Class.forName("com.mysql.cj.jdbc.Driver");  
          Connection con = DriverManager.getConnection( 
              "jdbc:mysql://localhost:3306/laptop_store","root","tomnisa123");          

          Statement statement = con.createStatement();   

          //Change SQL code here:
          ResultSet rs = statement.executeQuery(queryString1); 

          ResultSetMetaData rsmd = rs.getMetaData();

          int colCount = rsmd.getColumnCount();

            while(rs.next()) {
                for (int i = 1; i <= colCount; i++){          
                    System.out.print(rs.getString(i) + "  ");
                }
                System.out.println();
            }

          con.close();  

       } catch(Exception e){ 
        System.out.println(e);
       }  
    }  
}


为什么我不能使用MySQL中的“use”关键字?

显然,问题是您试图在一个
executeQuery
调用中执行两条SQL语句。你不能那样做。在单独的
execute
调用中运行“use”

但问题是为什么要使用
use
语句

  • 如果您使用它没有特别的原因。。。不要

  • 如果您使用它来确保您使用的是正确的数据库,那么这是不必要的。要使用的数据库/架构在连接URL中指定

     "jdbc:mysql://localhost:3306/laptop_store"
                                  ^^^^^^^^^^^^
    
  • 如果您使用它在数据库/模式之间动态切换,那么最好为每个数据库使用单独的连接


您为什么要这样做?您已经在使用
laptop\u store
数据库,不需要使用
USE
行。非常确定Java MySQL客户端函数createStatement和executeQuery不支持由Semico分隔的多个SQL语句。我删除了
USE
行,并将其修复。非常感谢。
 "jdbc:mysql://localhost:3306/laptop_store"
                              ^^^^^^^^^^^^