既存のプログラムを JDBC-ODBC Bridge から UCanAccess に変換しています。それは何年も働いています。Java プログラムは MDB ファイルに書き込みます。変換後、1 つの挿入コマンドが機能しなくなりました。
「net.ucanaccess.jdbc.UcanaccessSQLException: 予期しないトークン: [」がスローされます。
いくつかの実験の後、名前にアポストロフィを含む 3 つの列が問題の原因であると判断しました。例: [Sched'd PO Place Date]。どうやら JDBC-ODBC ブリッジは気にしませんでしたが、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 を再構成する方法はありますか?