2017-05-01 47 views
2

我剛剛設法連接到本地.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剛剛創建的表有兩個生成的表之間的差異。

我可以正常打開表格「質量」並插入一些值。

現在,如果我試圖打開「供應商」我收到此錯誤信息:

error message

它是在德國,意思是「數據庫‘’不能被打開無論是數據庫沒有按不會被您的應用程序識別,或者文件已損壞。「

所以我試圖刪除「[ID] AUTOINCREMENT PRIMARY KEY」,它沒有這個工作正常。所以錯誤必須由「AUTOINCREMENT」引起。

與數據庫連接我用ucanacess:

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

難道我做錯了什麼事與我的「自動增量」?

回答

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開發團隊。