Java中的SQL查询错误

Java中的SQL查询错误,java,sql,oracle,Java,Sql,Oracle,这听起来非常简单,但我不知道为什么下面的代码不会创建表,而只是抛出一个错误。错误只是说“无法执行update one”(如catch语句中所指定)。代码是: sqlString = "CREATE TABLE TEMP " + "(Student_name varchar(30) NOT NULL, " + "Student_id char(5) NOT NULL, " + "Num_exam smallint NOT NU

这听起来非常简单,但我不知道为什么下面的代码不会创建表,而只是抛出一个错误。错误只是说“无法执行update one”(如catch语句中所指定)。代码是:

sqlString = "CREATE TABLE TEMP " +
            "(Student_name varchar(30) NOT NULL, " +
            "Student_id char(5) NOT NULL, " +
            "Num_exam smallint NOT NULL, " +
            "PRIMARY KEY (Student_id))";

try {
  stmt.executeUpdate(sqlString);
} catch (SQLException e) {
  System.out.println("Could not execute update one");
  stmt.close();
  return;
}
任何帮助都将不胜感激。干杯

编辑:打印StackTrace结果

java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
    at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:931)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
    at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1707)
    at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1670)
    at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:310)
    at application.busyStudents(application.java:282)
    at application.main(application.java:67)

尝试创建
sqlString
更改表名:

 sqlString = " CREATE TABLE TEMP1 " +
             "( Student_name varchar(30) NOT NULL, " +
             " Student_id char(5) NOT NULL, " +
             " Num_exam smallint NOT NULL, " +
             " PRIMARY KEY (Student_id))";

打印stacktrace并粘贴到此处。如果没有特定的错误,就无法完成很多工作。将
e.printStackTrace()
放入catch块并发布()输出。您可以使用e.printStackTrace()和其他函数(如e.getCause()等)从错误中获取更多信息。您是否可以尝试修改查询,如下所示:Student_name varchar(30)NOT NULL PRIMARY KEY。。。。。。。最后删除主键(Student_id)?我想您已经创建了一个名为“TEMP”的表。更改表名并尝试执行查询。这就是为什么需要显示printStackTrace()的原因