Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “线程中的异常”;“主要”;sql.SQLSyntaxErrorException:您的sql语法有错误;_Java_Mysql_Mysql Error 1064 - Fatal编程技术网

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语句