2017-10-12 2 views
0

Ich benutze Eclipse, SQLite-Datenbank und Hibernate. Ich möchte SchemaCrawler in meinem Projekt verwenden, habe bereits sqlite-jdbc-Bibliothek. Mein Ziel ist es, die SchemaCrawler-Struktur zweier Datenbanken zu vergleichen. Aber ich kann mich nicht einmal mit meiner ersten Datenbank verbinden. Ich verwende diesen Code:Welche JAR-Dateien werden für SchemaCrawler benötigt?

public class SchemaConroller { 

    public SchemaConroller() { 

     SchemaCrawlerOptions options = new SchemaCrawlerOptions(); 
     options.setSchemaInfoLevel(SchemaInfoLevelBuilder.standard()); 


     try { 
      Connection conn = getConnection(); 
      Catalog catalog = SchemaCrawlerUtility.getCatalog(conn, options); 
      for (Schema schema : catalog.getSchemas()) { 
       System.out.println(schema); 
       for (Table table : catalog.getTables(schema)) { 
        System.out.print("o--> " + table); 
        for (Column column : table.getColumns()) { 
         System.out.println("  o--> " + column); 
        } 
       } 
      } 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    private static Connection getConnection() throws SchemaCrawlerException, SQLException, ClassNotFoundException { 
     String dbPath = "src/home/accounting/DB/myDatabase.sqlite"; 
     Class.forName("org.sqlite.JDBC"); 
     Connection c = DriverManager.getConnection("jdbc:sqlite:" + dbPath); 
     return c; 
    } 
} 

ich immer Fehler:

Oct 12, 2017 1:31:50 PM schemacrawler.utility.SchemaCrawlerUtility matchDatabaseSpecificOverrideOptions 
INFO: Using database plugin for 
Oct 12, 2017 1:31:50 PM schemacrawler.utility.TypeMap <init> 
WARNING: Could not obtain data type map from connection 
java.lang.NullPointerException 
    at org.sqlite.jdbc3.JDBC3Connection.getTypeMap(JDBC3Connection.java:90) 
    at schemacrawler.utility.TypeMap.<init>(TypeMap.java:116) 
    at schemacrawler.crawl.RetrieverConnection.<init>(RetrieverConnection.java:194) 
    at schemacrawler.crawl.SchemaCrawler.crawl(SchemaCrawler.java:870) 
    at schemacrawler.utility.SchemaCrawlerUtility.getCatalog(SchemaCrawlerUtility.java:75) 
    at home.accounting.controller.SchemaConroller.<init>(SchemaConroller.java:35) 
    at home.accounting.DA.DBCheck.start(DBCheck.java:44) 
    at home.accounting.MainApp.start(MainApp.java:83) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:748) 

I schemacrawler.jar von here heruntergeladen. Könnte es sein, dass auch andere Gläser benötigt werden?

+0

Ein physischer Pfad nicht erforderlich ** String DBPATH = "src/home/Rechnungswesen/DB/myDatabase.sqlite"; ** –

+0

Ich habe auch versucht mit diesem: 'letzt Datasource Datasource = neue DatabaseConnectionOptions ("jdbc: sqlite: src/home/accounting/DB/myDatabase.sqlite"); \t \t return dataSource.getConnection ("brunduk", "brunduk"); 'Hat keinen Unterschied gemacht. – Alyona

Antwort

1

Alyona, Sie können die Warnung in dem Protokoll ignorieren, das Sie in Ihrer Frage geschrieben haben. Das sqlite-jdbc-jar ist nicht vollständig kompatibel mit den JDBC-Standards. Sie müssen also sehr genau mit der Version dieses jars arbeiten. Bitte verwenden Sie die Version 3.7.8, die nur mit der SchemaCrawler distribution verfügbar ist. Darüber hinaus benötigen Sie die schemacrawler-sqlite jar, die der von Ihnen verwendeten Version von SchemaCrawler entspricht.

Sualeh Fatehi, SchemaCrawler

+0

Ist Version kompatibel mit SchemaCrawler 14.16.04 oder soll ich zur vorherigen Version von SchemaCrawler wechseln? – Alyona

+0

Ich habe versucht, es mit der oben genannten Version zu verwenden, ich bekomme immer noch den Fehler 'at org.sqlite.Conn.getTypeMap (Conn.java:419)' aber zumindest funktioniert es jetzt! Und es gibt mir meine Datenbankstruktur. Ich habe meine Frage https://StackOverflow.com/questions/46706970/how-to-compare-two-database-structures kommentiert, dass es keine Kopie von diesem ist, da es eine ganz andere Sache verlangt. Kannst du mir bitte antworten? Was dieses betrifft, ist mein Problem gelöst. – Alyona

Verwandte Themen