bigspawn
bigspawn

Reputation: 1909

Error when connecting to MS Access database

I have a DB in Access. When I try to connect to it using the library UCanAccess:

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

Get when connecting:

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

Such errors:

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

If I export only the required table and connect to it, no errors. But I need to work with a full database.

EDITED

I removed references to none existent files in DB, but the error remained:

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

Upvotes: 1

Views: 740

Answers (1)

jamadei
jamadei

Reputation: 1710

It's because of the name of tables and/or FK in access which likely have Cyrillic characters or something like that. This issue, that is strictly limited to metadata(e.g. column or table names)in ucanaccess 2, will be totally solved with ucanaccess 3.0.0. and characters of any alphabet will be supported. I'm working on the latest ucanaccess3 tests...

Upvotes: 1

Related Questions