2015-06-28 252 views
1

我在Access中有一個數據庫。當我嘗試使用圖書館UCanAccess連接到它:連接到MS Access數據庫時出錯

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
String url = "jdbc:ucanaccess://" + fileSrc; 
conn = DriverManager.getConnection(url, user, password); 
s = conn.createStatement(); 
ResultSet rs = s.executeQuery("SELECT * FROM patients"); 

獲取連接時:

conn = DriverManager.getConnection(url, user, password); 

這樣的錯誤:

WARNING:External file C:\medbase\medbase.mdb does not exist 
WARNING:given file does not exist: C:\medbase\medbase.mdb 
WARNING:unexpected token: ___________ 
WARNING:unexpected token: ________ 
WARNING:unexpected token: _______________________ 
WARNING:unexpected token: ______________________ 
WARNING:unexpected token: ____________________ 
WARNING:unexpected token: ____________ 
WARNING:unexpected token: __________________ 
WARNING:unexpected token: ____________________ 
WARNING:unexpected token: ___________ 
net.ucanaccess.jdbc.UcanaccessSQLException: unexpected token: _________DEAA914C_823A_11D2_ABBA_525400DB56E6_ 
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:247) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at ru.bigspawn.AccessDatabase.<init>(AccessDatabase.java:20) 
    at ru.bigspawn.Main.main(Main.java:40) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 
Caused by: java.sql.SQLSyntaxErrorException: unexpected token: _________DEAA914C_823A_11D2_ABBA_525400DB56E6_ 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source) 
    at net.ucanaccess.converters.LoadJet.exec(LoadJet.java:1308) 
    at net.ucanaccess.converters.LoadJet.access$0(LoadJet.java:1303) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.loadForeignKey(LoadJet.java:626) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.loadTableFKs(LoadJet.java:819) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.createFKs(LoadJet.java:901) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.loadTables(LoadJet.java:970) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.access$3(LoadJet.java:966) 
    at net.ucanaccess.converters.LoadJet.loadDB(LoadJet.java:1361) 
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:236) 
    ... 9 more 
Caused by: org.hsqldb.HsqlException: unexpected token: _________DEAA914C_823A_11D2_ABBA_525400DB56E6_ 
    at org.hsqldb.error.Error.parseError(Unknown Source) 
    at org.hsqldb.ParserBase.unexpectedToken(Unknown Source) 
    at org.hsqldb.ParserBase.checkIsIrregularCharInIdentifier(Unknown Source) 
    at org.hsqldb.ParserDQL.checkIsSchemaObjectName(Unknown Source) 
    at org.hsqldb.ParserDQL.readNewSchemaObjectName(Unknown Source) 
    at org.hsqldb.ParserDQL.readNewDependentSchemaObjectName(Unknown Source) 
    at org.hsqldb.ParserDDL.compileAlterTable(Unknown Source) 
    at org.hsqldb.ParserDDL.compileAlter(Unknown Source) 
    at org.hsqldb.ParserCommand.compilePart(Unknown Source) 
    at org.hsqldb.ParserCommand.compileStatements(Unknown Source) 
    at org.hsqldb.Session.executeDirectStatement(Unknown Source) 
    at org.hsqldb.Session.execute(Unknown Source) 
    ... 20 more 

如果我只導出所需的表,並連接到它,沒有錯誤。但我需要使用完整的數據庫。

EDITED

我刪除了在DB沒有存在的文件的引用,但錯誤依然存在:

WARNING:unexpected token: ___________ 
WARNING:unexpected token: ________ 
WARNING:unexpected token: _______________________ 
WARNING:unexpected token: ______________________ 
WARNING:unexpected token: ____________________ 
WARNING:unexpected token: ____________ 
WARNING:unexpected token: __________________ 
WARNING:unexpected token: ____________________ 
WARNING:unexpected token: ___________ 
net.ucanaccess.jdbc.UcanaccessSQLException: unexpected token: _________DEAA914C_823A_11D2_ABBA_525400DB56E6_ 
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:247) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at ru.bigspawn.AccessDatabase.<init>(AccessDatabase.java:22) 
    at ru.bigspawn.Main.main(Main.java:44) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 
Caused by: java.sql.SQLSyntaxErrorException: unexpected token: _________DEAA914C_823A_11D2_ABBA_525400DB56E6_ 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) 
    at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source) 
    at net.ucanaccess.converters.LoadJet.exec(LoadJet.java:1308) 
    at net.ucanaccess.converters.LoadJet.access$0(LoadJet.java:1303) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.loadForeignKey(LoadJet.java:626) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.loadTableFKs(LoadJet.java:819) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.createFKs(LoadJet.java:901) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.loadTables(LoadJet.java:970) 
    at net.ucanaccess.converters.LoadJet$TablesLoader.access$3(LoadJet.java:966) 
    at net.ucanaccess.converters.LoadJet.loadDB(LoadJet.java:1361) 
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:236) 
    ... 9 more 
    Caused by: org.hsqldb.HsqlException: unexpected token: _________DEAA914C_823A_11D2_ABBA_525400DB56E6_ 
    at org.hsqldb.error.Error.parseError(Unknown Source) 
    at org.hsqldb.ParserBase.unexpectedToken(Unknown Source) 
    at org.hsqldb.ParserBase.checkIsIrregularCharInIdentifier(Unknown Source) 
    at org.hsqldb.ParserDQL.checkIsSchemaObjectName(Unknown Source) 
    at org.hsqldb.ParserDQL.readNewSchemaObjectName(Unknown Source) 
    at org.hsqldb.ParserDQL.readNewDependentSchemaObjectName(Unknown Source) 
    at org.hsqldb.ParserDDL.compileAlterTable(Unknown Source) 
    at org.hsqldb.ParserDDL.compileAlter(Unknown Source) 
    at org.hsqldb.ParserCommand.compilePart(Unknown Source) 
    at org.hsqldb.ParserCommand.compileStatements(Unknown Source) 
    at org.hsqldb.Session.executeDirectStatement(Unknown Source) 
    at org.hsqldb.Session.execute(Unknown Source) 
    ... 20 more 
+0

這顯然是說* C:\ medbase \ medbase.mdb不存在* – Madhan

+0

是什麼在'fileSrc' – Madhan

+0

值@Madhan'fileSrc =「C: \\ \\用戶\\ bigspawn桌面\\ \\ SyncAccessDB System_full.mdb「' – bigspawn

回答

1

這是因爲在訪問表和/或FK的名下可能有西里爾字符或類似的東西。這個問題嚴格限於ucanaccess 2中的元數據(例如列名或表名),將完全用ucanaccess 3.0.0解決。並且任何字母表的字符都將被支持。 我工作的最新ucanaccess3測試...

相關問題