没有准备好的语句的 ActiveJDBC 插入

ActiveJDBC insert without prepared statement

我正在尝试将 ActiveJDBC 与驱动程序不支持 Connection.prepareStatement(String, String[]) 方法的数据库一起使用。尝试插入时出现以下异常:

org.javalite.activejdbc.DBException: java.sql.SQLFeatureNotSupportedException: [DataDirect][OpenEdge JDBC Driver]Unsupported method: Connection.prepareStatement(String, String[]), query: INSERT INTO ...
    at com.ddtek.jdbc.openedgebase.ddb9.b(Unknown Source)
    at com.ddtek.jdbc.openedgebase.ddb9.a(Unknown Source)
    at com.ddtek.jdbc.openedgebase.ddb8.b(Unknown Source)
    at com.ddtek.jdbc.openedgebase.ddb8.a(Unknown Source)
    at com.ddtek.jdbc.openedgebase.BaseConnection.prepareStatement(Unknown Source)
    at org.javalite.activejdbc.DB.execInsert(DB.java:597)
    at org.javalite.activejdbc.Model.insert(Model.java:2618)
    at org.javalite.activejdbc.Model.save(Model.java:2552)
    at org.javalite.activejdbc.Model.saveIt(Model.java:2477)
    ...

支持一些其他形式的 prepareStatement,例如prepareStatement (String)prepareStatement (String, int)

我能做些什么来说服 ActiveJDBC 不要使用不受支持的语句吗?

正如您在 source 中看到的,这几乎是硬编码的。因此,从我的想法来看,您可以请求更改 ActiveJDBC 或继续将您的 "flawed" 连接包装到自定义实现中并覆盖此 prepareStatement(String, String[])

public PreparedStatement prepareStatement(String qry, String[] autoIdColumns) {
  return delegate.prepareStatement(qry);
}

Google 返回了一些关于 ConnectionWrapper 实现的想法。

请查看 ActiveJDBC 支持的数据库:http://javalite.io/activejdbc#supported-databases。每一个都经过彻底测试。