2015-02-05 2 views
1

Я скачал и установил банки uCanAccess следуя инструкциям здесь: Manipulating an Access database from Java without ODBC Я учусь, как использовать майкрософт доступ к базе данных для Java и это кодирование яJava: ucanaccess HSQLDB java.lang.NoSuchMethodError:

package Main.Net; 

import java.sql.*; 


public class DataBase { 

    Connection con; 
    Statement st; 
    ResultSet rs; 



    public DataBase() { 

    } 

    private void connect() { 

     try { 
      //String driver = "sun.jdbc.odbc.jdbcodbcdriver"; 
      //Class.forName(driver); 

      String db = "jdbc:ucanaccess://C:/Users/MyUser/workspace/Connectors_DB.accdb"; 
      con = DriverManager.getConnection(db); 
      st = con.createStatement(); 
      String sql = "select * from Table"; 
      rs = st.executeQuery(sql); 

      while(rs.next()) { 

       String username = rs.getString("Username"); 
       String password = rs.getString("Password"); 

       System.out.println(username + "\t" + password); 
      } 

     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 
     new DataBase().connect(); 
    } 
} 

и когда я запустить программу Java, он приходит с этой ошибкой

Exception in thread "main" java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties; 
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at net.ucanaccess.jdbc.DBReference.getHSQLDBConnection(DBReference.java:354) 
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:206) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at Main.Net.DataBase.connect(DataBase.java:23) 
at Main.Net.DataBase.main(DataBase.java:42) 

ошибка в этом коде:

String db = "jdbc:ucanaccess://C:/Users/MyUser/workspace/Connectors_DB.accdb"; 
con = DriverManager.getConnection(db); 

это как-то связано с версией hsqldb? потому что если это делает, я уже пробовал загрузку других версий HSQLDB и та же ошибка появляется

вот банки я использую:

ucanaccess-2.0.9.3.jar

Викисклада Ланг-2,6 .jar

Обще-каротаж 1.1.1.jar

hsqldb.jar

jackcess-2.0.8.jar

так ... как я могу это исправить?

+0

Ну, непосредственная причина ошибки очевидна. Что касается этой ситуации, существует несколько механизмов, но наиболее распространенными на сегодняшний день являются несогласованные файлы jar. –

ответ

2

Ответы в this thread предполагают, что на вашем пути к классам существует несколько hsqldb-версий. Может быть, один из других задействованных банок содержит hsqldb? Вы можете проверить их, используя инструмент zip по вашему выбору, или команду jar -tf foo.jar.

Смежные вопросы