2

我正在尝试将 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 不要使用不受支持的语句吗?

4

2 回答 2

0

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

于 2015-12-01T17:42:00.480 回答
0

正如您在源代码中看到的,这几乎是硬编码的。因此,在我看来,您可以请求更改 ActiveJDBC,或者继续将“有缺陷的”连接包装到自定义实现中并覆盖它prepareStatement(String, String[])

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

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

于 2015-12-01T10:28:46.227 回答