【问题标题】:Access DB autoincrement doesn't let me open the table访问数据库自动增量不允许我打开表
【发布时间】:2017-05-01 18:22:06
【问题描述】:

我刚刚成功连接到本地 .accdb 访问数据库,现在正在尝试创建我的表。我用 Java 运行这两行代码,运行这些 SQL 命令时没有错误:

Statement st = d.createStatement();
st.executeUpdate("CREATE TABLE suppliers ( [name] TEXT(255), [adress] TEXT(255), [ID] AUTOINCREMENT PRIMARY KEY);");
st.executeUpdate("CREATE TABLE quality ( [name] TEXT(255) );");
st.close();

但现在我想用 Microsoft Access 打开刚刚创建的表,这两个生成的表之间存在差异。

我可以正常打开“质量”表并插入一些值。

现在,如果我尝试打开“供应商”,我会收到以下错误消息:

它是德语,意思是“无法打开数据库''。数据库没有被您的应用程序识别或文件已损坏。”

所以我尝试删除“[ID] AUTOINCREMENT PRIMARY KEY”,没有这个它可以正常工作。所以这个错误一定是由“AUTOINCREMENT”引起的。

要连接我使用 ucanacess 的数据库:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
c = DriverManager.getConnection("jdbc:ucanaccess://C:/bin/Test.accdb");

我的“自动增量”有什么问题吗?

【问题讨论】:

    标签: java database ms-access jdbc ucanaccess


    【解决方案1】:

    我能够使用 UCanAccess 4.0.2 重现您的问题。它似乎与最后指定的 [ID] 列有关。也就是说,这会导致问题:

    sql = "CREATE TABLE suppliers ( [name] TEXT(255), [adress] TEXT(255), [ID] AUTOINCREMENT PRIMARY KEY)";
    

    ...但按此顺序指定列可以正常工作:

    sql = "CREATE TABLE suppliers ([ID] AUTOINCREMENT PRIMARY KEY, [name] TEXT(255), [adress] TEXT(255))";
    

    我会将这些信息传递给 UCanAccess 开发团队。

    【讨论】:

    • 在 UCanAccess 4.0.3 中修复的问题。
    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多