フイ:
私は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" ^^^^^^^^^^^^
あなたが動的にするためにそれを使用している場合、切り替えのデータベース/スキーマの間では、各データベースに別々の接続を使用した方が良いかもしれません。