UCanAccess

时间:2016-05-28 22:28:53

标签: java mysql ms-access java-8 ucanaccess

我正在尝试使用Java 8连接到Access数据库,如下所示:

Manipulating an Access database from Java without ODBC

我不熟悉数据库的创建/设计。

连接似乎有效,因为我收到了一些错误消息:

  

警告:表MB02的元数据出错:表的行数在   元数据是556,但已找到并加载了557条记录   UCanAccess。一切都会好起来的,但最好修好你的   数据库中。

我有这种方法试图用SQL SELECT语句从数据库中提取一些东西:

public void searchDatabase()
        throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {

    Connection con = DriverManager
            .getConnection("jdbc:ucanaccess:///C:/Users/Blabla.mdb");
    Statement stmt = con.createStatement();

    String query = "SELECT * FROM MB01";

    ResultSet resultSet = stmt.executeQuery(query);

    while(resultSet.next()){
        System.out.println(resultSet.getString(1));
    }

}

我一直收到这个错误:

  

线程“main”中的异常java.util.regex.PatternSyntaxException:   晃来晃去的角色'?'近指数19 MB 01 BEZAHLT ???                      ^ at java.util.regex.Pattern.error(Unknown Source)at java.util.regex.Pattern.sequence(Unknown Source)at at   java.util.regex.Pattern.expr(未知来源)at   java.util.regex.Pattern.compile(未知来源)at   java.util.regex.Pattern。(未知来源)at   java.util.regex.Pattern.compile(未知来源)at   java.lang.String.replaceAll(未知来源)at   net.ucanaccess.converters.SQLConverter.replaceWhiteSpacedTableNames0(SQLConverter.java:547)     在   net.ucanaccess.converters.SQLConverter.replaceWhiteSpacedTables(SQLConverter.java:526)     在   net.ucanaccess.converters.SQLConverter.convertSQL(SQLConverter.java:372)     在   net.ucanaccess.converters.SQLConverter.convertSQL(SQLConverter.java:472)     在   net.ucanaccess.jdbc.UcanaccessStatement.convertSQL(UcanaccessStatement.java:57)     在   net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:206)     在DBCrawler.searchDatabase(DBCrawler.java:27)

第27行是抛出错误的地方:

ResultSet resultSet = stmt.executeQuery(query);

问题是我可以将查询字符串留空或在其中放入任何无意义的值,但我仍然会收到错误。

我从哪里开始搜索问题或如何解决此问题?

1 个答案:

答案 0 :(得分:2)

我使用名为19 MB 01 BEZAHLT ???的表创建了一个Access数据库,并且能够使用UCanAccess 3.0.5重现您的问题。问题修复在未来版本的 UCanAccess 3.0.6。