Javaは:MySQLのから "USE" キーワードを使用することができませんか?

フイ:

私は2つのSQLファイルを持っています:

query1.sql

SELECT * FROM laptop_store.gpu;

query2.sql

USE laptop_store;
SELECT * FROM gpu

MySQLのワークベンチ8.0 CEの両方のExcecutingしても同じ結果が表示されます。

結果:

私は2つの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);
       }  
    }  
}

唯一の最初のものは成功です

成功

しかし、二つ目のショーのエラー:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM gpu' at line 2

なぜ私は、MySQLから「USE」キーワードを使用することはできませんか?

スティーブンC:

どうやら、問題はあなたが単一で2つのSQL文を実行しようとしているということであるexecuteQueryコール。あなたはそれを行うことはできません。別々での「使用」を実行しexecute電話を。

しかし、問題は、なぜあなたが使用しているされたuse文を?

  • あなたがいない特定の理由のためにそれを使用している場合は...しないでください。

  • あなたは正しいデータベースを使用していることを確認するためにそれを使用している場合、それは不要です。使用するデータベース/スキーマは、接続URLで指定されています。

     "jdbc:mysql://localhost:3306/laptop_store"
                                  ^^^^^^^^^^^^
    
  • あなたが動的にするためにそれを使用している場合、切り替えのデータベース/スキーマの間では、各データベースに別々の接続を使用した方が良いかもしれません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=208055&siteId=1