我正在将现有程序从 JDBC-ODBC Bridge 转换为 UCanAccess。它已经工作了多年。Java 程序写入一个 MDB 文件。转换后,一个插入命令停止工作。
它抛出“net.ucanaccess.jdbc.UcanaccessSQLException:意外令牌:[”。
经过一些实验后,我确定问题是由名称中包含撇号的三列引起的。示例:[预定的采购订单放置日期]。显然 JDBC-ODBC 桥不在乎,但 UCanAccess 不在乎。
我有点受困于现有的 MDB 结构,或者我只是重命名这些字段。但是,如果我这样做,不知道有多少下游报告会被破坏。MDB 用于 Ad Hoc 报告。
这是问题的简化 SQL Select 版本。它会引发与插入相同的错误。
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 以便驱动程序可以执行它们?