2016-07-26 7 views
1

Statt MySQL Xampp Server auf meinem Java-Projekt verwenden, entschied ich mich, Microsoft Access als meine Datenbank verwenden, aber ich habe einen Fehler in meiner Abfrage mit dieser Syntax. Hier ist mein Java-CodeCREATE TABLE WENN NICHT EXISTS löst einen Fehler in UCanAccess

public static void main(String[] args) throws SQLException { 
     // TODO code application logic here 
     try { 
      conn = DriverManager.getConnection("jdbc:ucanaccess://C:\\Database.accdb;jackcessOpener=myproject.CryptCodecOpener","root", ""); 
      System.out.println("successfuly connected"); 
      Statement s = conn.createStatement(); 
      PreparedStatement state = conn.prepareStatement("CREATE TABLE IF NOT EXISTS test(name varchar(400))"); 
      state.executeUpdate(); 

} catch (SQLException e) { 
e.printStackTrace(); 
} 
    finally { 

     } 

Hier ist der Fehler:

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.1 user lacks privilege or object not found: IF 
    at net.ucanaccess.jdbc.UcanaccessPreparedStatement.executeUpdate(UcanaccessPreparedStatement.java:256) 
    at myproject.MyProject.main(MyProject.java:31) 

IF NOT EXISTS in MySQL mit funktioniert gut, aber in UCanAccess habe ich diesen Fehler und wenn ich die IF NOT EXISTS entfernen funktioniert es gut.

+0

Haben Sie genügend Berechtigungen, um eine Tabelle in der Datenbank zu erstellen? – Pirate

+0

Warum verwenden Sie HSQLDB nicht einfach direkt? –

+0

ja. Wenn ich die IF NOT EXISTS wie folgt entfernen ** CREATE TABLE TEST ("name varchar (250)") **, es funktioniert gut. –

Antwort

2

UCanAccess unterstützt IF NOT EXISTS in DDL-Anweisungen einfach nicht. Sie sollten in der Lage sein, stattdessen Folgendes zu tun:

try (Statement s = conn.createStatement()) { 
    s.execute("CREATE TABLE test (name TEXT(50))"); 
} catch (UcanaccessSQLException ex) { 
    if (ex.getMessage().indexOf("object name already exists:") > 0) { 
     System.out.println("INFO: Table already exists."); 
    } else { 
     throw ex; 
    } 
} 
Verwandte Themen