gpt4 book ai didi

java - "UcanaccessSQLException: unexpected token"当列名包含撇号时

转载 作者:行者123 更新时间:2023-11-30 11:07:54 24 4
gpt4 key购买 nike

我正在将现有程序从 JDBC-ODBC Bridge 转换为 UCanAccess。它已经工作多年。 Java 程序写入 MDB 文件。转换后,一个 Insert 命令停止工作。
它抛出“net.ucanacess.jdbc.UcanaccessSQLException:意外标记:[”。

经过一些实验后,我确定问题是由名称中包含撇号的三列引起的。示例:[计划采购订单地点日期]。显然 JDBC-ODBC Bridge 不关心,但 UCanAccess 关心。

我有点受困于现有的 MDB 结构,或者我只是重命名这些字段。但不知道如果我这样做的话,有多少下游报告会被破坏。 MDB 用于临时报告。

这是该问题的简化 SQL Select 版本。它抛出与 Insert 相同的错误。

    String cJD = "net.ucanaccess.jdbc.UcanaccessDriver";
String cS = "jdbc:ucanaccess://C:/MosAll/mosall.mdb";
String uid = "";
String pw = "";
String sql4 = "select [Sched'd PO Place Date] from [Tier 1] ";

Class.forName(cJD);
Connection con = DriverManager.getConnection(cS, uid, pw);
PreparedStatement pstmt4;
pstmt4 = con.prepareStatement(sql4);
pstmt4.execute();

有没有办法“转义”撇号或重新配置 ucanaccess 以便驱动程序可以执行它们?

最佳答案

此问题已在 UCanAccess 2.0.9.4 中修复。


上一个答案:

我已经能够使用 UCanAccess 版本 2.0.9.3 重现该问题。

select [Sched'd PO Place Date] ...

失败,但现在只需省略 '

select [Schedd PO Place Date] ...

工作正常。有趣的是,使用反引号代替方括号

select `Sched'd PO Place Date` ...

也产生异常

net.ucanaccess.jdbc.UcanaccessSQLException: unexpected token: [

幸运的是,这将在 UCanAccess 的 future 版本中得到修复。

关于java - "UcanaccessSQLException: unexpected token"当列名包含撇号时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28731023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com