访问数据库自动增量并不能让我打开表格

时间:2017-05-01 18:22:06

标签: java database ms-access jdbc ucanaccess

我刚刚设法连接本地.accdb Access数据库,现在我正在尝试创建我的表。我使用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打开刚创建的表,两个生成的表之间存在差异。

我可以打开桌子"质量"通常并插入一些值。

现在,如果我试图打开"供应商"我收到此错误消息:

error message

用德语表示"数据库''无法打开。数据库无法被您的应用程序识别或文件已损坏。"

所以我试图删除" [ID] AUTOINCREMENT PRIMARY KEY"没有这个就可以正常工作。所以错误必须由" AUTOINCREMENT"。

引起

要使用ucanacess连接数据库:

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

我是否对我的" AUTOINCREMENT"?

做错了

1 个答案:

答案 0 :(得分:2)

我可以使用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开发团队。