Я конвертирую существующую программу из JDBC-ODBC Bridge в UCanAccess. Он работает уже много лет. Программа Java записывает в файл MDB. После преобразования одна команда Insert перестала работать.
Она выдает "net.ucanaccess.jdbc.UcanaccessSQLException: неожиданный токен: [".
После некоторых экспериментов я определил, что проблема вызвана тремя столбцами, имена которых содержат апострофы. Пример: [Запланированная дата размещения заказа]. Судя по всему, мосту JDBC-ODBC все равно, а UCanAccess — нет.
Я несколько застрял в существующей структуре MDB, иначе я бы просто переименовал поля. Но невозможно сказать, сколько нижестоящих отчетов может быть повреждено, если я это сделаю. MDB используется для отчетов Ad Hoc.
Вот упрощенная версия задачи 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, чтобы драйвер мог их выполнять?