Java:无法使用;使用「;来自MySQL的关键字?
我有两个SQL文件: query1.sqlJava:无法使用;使用「;来自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
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"
^^^^^^^^^^^^