java - CREATE TABLE 中的 AUTO_INCREMENT 抛出 JDBC.SQLSERVEREXCEPTION

标签 java mysql servlets jdbc

我试图在我的 SQL 表中创建一个 AUTO_INCREMENT 字段,该字段是通过 SQL Statement.execute 创建的,但它继续抛出 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'AUTO_INCREMENT '.

这是我创建表格的代码:

public class CreateTable {
Connection con;
Statement stmt = null;
ResultSet queryResults = null;

public CreateTable() {

    con = DatabaseUtil.getConnection();

    try {
        stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);

        stmt.execute("IF OBJECT_ID('A00776920_Members') IS NOT NULL DROP TABLE A00776920_Members");

        String createTable = "CREATE TABLE A00776920_Members ("
                + "memberid INT NOT NULL AUTO_INCREMENT, "
                + "firstName VARCHAR(30) DEFAULT NULL, "
                + "lastName VARCHAR(30) DEFAULT NULL, "
                + "address VARCHAR(40) DEFAULT NULL, "
                + "city VARCHAR(40) DEFAULT NULL, "
                + "code CHAR(7) DEFAULT NULL, "
                + "country VARCHAR(40) DEFAULT NULL, "
                + "phoneNumber CHAR(14) DEFAULT NULL, "
                + "email VARCHAR(40) DEFAULT NULL, "
                + "PRIMARY KEY (memberid))";
        stmt.execute(createTable);

        stmt.close();
        con.close();

    } catch (SQLException ex) {
        ex.printStackTrace();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

public static void main(String[] args) {
    new CreateTable();
}

向我抛出的确切错误是:

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'AUTO_INCREMENT'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(Unknown Source)
at a00776920.assignment.dao.CreateTable.<init>(CreateTable.java:40)
at a00776920.assignment.dao.CreateTable.main(CreateTable.java:53)

任何帮助将不胜感激! 干杯

最佳答案

您似乎使用了错误的 JDBC 驱动程序。 create table 语法显然是 MySQL,但您显然使用的是 MS SQL Server JDBC Driver。使用正确的驱动程序 - 你应该没问题。

您可以从这里下载 MySQL JDBC 驱动程序:http://dev.mysql.com/downloads/connector/j/5.5.html

关于java - CREATE TABLE 中的 AUTO_INCREMENT 抛出 JDBC.SQLSERVEREXCEPTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26474903/

相关文章:

java - Maven 依赖版本控制和 java.lang.NoClassDefFoundError

mysql - array.array 的 JSON_REMOVE 导致 "path expressions may not contain the * and ** tokens"错误

http - 如何使用 Java Servlet 实现像 BOSH 这样的东西

java - 无法部署分解的 Artifact

java - 如何将 alt 属性传递给 Servlet

java - Android 两个网络同时操作

java - Java用+优化了多少字符串连接?

java - 如何用neo4j计算共同好友?

mysql - 配置单元和数据库之间的健全性检查

mysql - 从查询中获取多个值