2017-05-01 3 views
2

Ich habe gerade eine Verbindung mit einer lokalen ACCDB-Access-Datenbank hergestellt und versuche nun, meine Tabellen zu erstellen. Ich betreibe diese beiden Zeilen mit Java und es gibt keine Fehler während dieser SQL-Befehle ausführen:Access DB Autoincrement lässt mich die Tabelle nicht öffnen

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(); 

Aber jetzt, da ich die soeben erstellte Tabellen mit Microsoft Access gibt es einen Unterschied zwischen den beiden generierten Tabellen öffnen möchten.

Ich kann die Tabelle "Qualität" normal öffnen und einige Werte einfügen.

Nun, wenn ich zu öffnen ich versuche, „Lieferanten“ Ich bekomme diese Fehlermeldung:.

error message

Es ist in deutscher Sprache und bedeutet „Die Datenbank‚‘nicht geöffnet worden könnte entweder die Datenbank doesn Sie werden von Ihrer Anwendung nicht erkannt oder die Datei ist beschädigt. "

Also habe ich versucht, die "[ID] AUTOINCREMENT PRIMARY KEY" zu entfernen und es funktioniert gut ohne dies. Der Fehler muss also von "AUTOINCREMENT" verursacht werden.

Um mit der Datenbank verbinden ich ucanacess:

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

ich etwas falsch mit meinem "AUTOINCREMENT" gemacht?

Antwort

2

Ich kann Ihr Problem mit UCanAccess 4.0.2 reproduzieren. Es scheint sich auf die zuletzt angegebene Spalte [ID] zu beziehen. Das heißt, dies verursacht das Problem:

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

... aber die Spalten in dieser Reihenfolge Angabe funktioniert in Ordnung:

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

ich diese Informationen zusammen mit dem UCanAccess Entwicklungsteam übergeben wird.

Verwandte Themen