我正在为使用Oracle数据库运行的java程序编写测试用例。我的代码是:
st = conn.prepareStatement( MY_QUERY, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
Array array = conn.createArrayOf("VARCHAR", ids);
st.setArray(1, array);
rs = st.executeQuery();
查询在哪里
QUERY = "SELECT * from TABLE where id in ?"
我们正在使用hsqldb数据库进行测试。但是,在测试中运行上面的代码会给出
java.lang.AbstractMethodError: org.hsqldb.jdbc.jdbcConnection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;
在createArrayOf
行上。
我还没能找到解决这个问题的方法。非常感谢任何帮助。感谢
答案 0 :(得分:4)
在类JDBCConnection
的{{3}}(版本2.x)中(实现java.sql.Connection
)createArrayOf
方法可用并记录在案:
createArrayOf
public Array createArrayOf(String typeName, 对象[]元素) 抛出SQLException
自HSQLDB版本2.x起支持此方法。因此,您应更新您的应用程序以使用最新的HSQLDB驱动程序,该驱动程序可以是official HSQLDB JavaDoc。
根据downloaded here,您应该至少使用版本2.2.1的HSQLDB驱动程序作为此版本的开发团队“ Connection#createArrayOf 的固定类型限制”方法。< / p>
答案 1 :(得分:1)
HSQLDB中的SQL查询语法不同:
SELECT * from TABLE WHERE id IN(UNNEST(?))