【问题标题】:java.util.regex.PatternSyntaxException with UCanAccess带有 UCanAccess 的 java.util.regex.PatternSyntaxException
【发布时间】:2016-05-28 22:28:52
【问题描述】:

我正在尝试使用 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));
    }

}

我不断收到此错误:

线程“主”java.util.regex.PatternSyntaxException 中的异常: 悬空元字符“?”靠近索引 19 MB 01 BEZAHLT ??? ^ 在 java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(未知来源)在 java.util.regex.Pattern.compile(未知来源)在 java.util.regex.Pattern.(未知来源)在 java.util.regex.Pattern.compile(未知来源)在 java.lang.String.replaceAll(未知来源)在 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);

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

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

【问题讨论】:

  • 问题似乎来自数据库本身。检查是否存在可能以某种方式被误认为通配符的字符。
  • 您使用的是同一个 ucanaccess 版本的控制台吗?注意...
  • 另外你使用的 ucanaccess 版本好像很旧了...

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多