Java “线程中的异常”;“主要”;sql.SQLSyntaxErrorException:您的sql语法有错误;
公共班机{Java “线程中的异常”;“主要”;sql.SQLSyntaxErrorException:您的sql语法有错误;,java,mysql,mysql-error-1064,Java,Mysql,Mysql Error 1064,公共班机{ private static boolean connectedToDatabase = false; public static String TableSchedule = "CREATE TABLE Schedule(\n" + " courseID CHAR(12) NOT NULL UNIQUE,\n" + " sectionNumber CHAR(18),\n"
private static boolean connectedToDatabase = false;
public static String TableSchedule = "CREATE TABLE Schedule(\n"
+ " courseID CHAR(12) NOT NULL UNIQUE,\n"
+ " sectionNumber CHAR(18),\n"
+ " title VARCHAR(64),\n"
+ " year INT,\n"
+ " semester CHAR(6),\n"
+ " instructor VARCHAR(24),\n"
+ " department CHAR(16),\n"
+ " program VARCHAR(48),\n"
+ " PRIMARY KEY(courseID, sectionNUmber)\n"
+ ")";
static Connection connection;
static ResultSet resultS;
static PreparedStatement pStatement;
public static void main(String [] args) throws SQLException{
connectToDatabase();
}
public static void connectToDatabase()引发SQLException{
final String DATABASE_URL = "jdbc:mysql://localhost:3306/studentDB";
final String USERNAME = "root";
final String PASSWORD = "myPassword";
connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD);
connectedToDatabase = true;
setQuery(TableSchedule);
if(!connectedToDatabase){
throw new IllegalStateException("Not connected to Database");
}
pStatement = connection.prepareStatement(query);
pStatement.executeUpdate("DROP TABLE IF EXISTS " + TableSchedule);
resultS = pStatement.executeQuery();
}
}
公共静态void setQuery(字符串查询)抛出SQLException、IllegalStateException{
final String DATABASE_URL = "jdbc:mysql://localhost:3306/studentDB";
final String USERNAME = "root";
final String PASSWORD = "myPassword";
connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD);
connectedToDatabase = true;
setQuery(TableSchedule);
if(!connectedToDatabase){
throw new IllegalStateException("Not connected to Database");
}
pStatement = connection.prepareStatement(query);
pStatement.executeUpdate("DROP TABLE IF EXISTS " + TableSchedule);
resultS = pStatement.executeQuery();
}
}
线程“main”java.sql.SQLSyntaxErrorException中的异常:您的sql语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“创建表计划”附近使用的正确语法(
courseID字符(12)非空唯一,
第1行的节号字符(1
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
位于com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
位于com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1333)
在com.mysql.cj.jdbc.statementinpl.executeLargeUpdate上(statementinpl.java:2106)
在com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1243)
位于application.Main.setQuery(Main.java:53)
位于application.Main.connectToDatabase(Main.java:42)
位于application.Main.Main(Main.java:30)
我不确定我在这里做错了什么您在这里执行的语句
pStatement.executeUpdate(“如果存在删除表”+表调度程序);
是
删除表格(如果存在)创建表格计划(
等
作为SQL语句,这是没有意义的。删除表和创建表是独立的语句
要删除该表(如果存在),请执行以下操作:
删除表(如果存在计划)
然后在执行之后,您可以执行该语句来重新创建它,如果您真的希望这样做的话。execute():用于所有类型SQL语句的方法
executeUpdate():此方法用于执行DML语句(插入、更新和删除)
executeQuery():此方法用于使用SELECT查询从数据库检索数据
因此,这里需要使用“executeUpdate()”
此外,还需要分别执行drop和update的更新
亲爱的,请注意代码中的以下几行
pStatement = connection.prepareStatement(query);
pStatement.executeUpdate("DROP TABLE IF EXISTS " + TableSchedule);
resultS = pStatement.executeQuery();
用这些线替换它
pStatement = connection.prepareStatement(query);
pStatement.executeUpdate("Drop Table if Exists Schedule");
pStatement.executeUpdate(query);
然后运行该程序,我希望它能解决您的问题请将您的查询作为文本而不是图像发布。从查询中删除\n将出现相同的错误。
TableSchedule
是您的CREATE TABLE
语句。您似乎正在粘贴“如果存在,请删除表”
放在前面,并希望它是一个可执行语句。如果存在,则删除表CREATE TABLE
不是有效的SQL语句