我有以下内容:
def getIds(name: String): java.sql.Array = {
val ids: Array[Integer] = Array()
val ps: PreparedStatement = connection.prepareStatement("SELECT id FROM table WHERE name = ?")
ps.setString(1, name)
val resultSet = ps.executeQuery()
while(resultSet.next()) {
val currentId = resultSet.getInt(1)
ids :+ currentId
}
return connection.createArrayOf("INTEGER", ids.toArray)
}
我的意图是使用这种方法输出,使用.setArray(1, <array>)
将其放入另一个PreparedStatement
但我得到以下错误:java.sql.SQLFeatureNotSupportedException
我使用的是MySQL。已经尝试过INTEGER、INT、BIGINT。没有一个成功。
更多研究发现:
MySQL似乎没有数组变量。May U可以尝试临时表而不是数组变量
所以我的解决方案是创建一个只有ids:的临时表
val idsStatement = connection.prepareStatement(
"CREATE TEMPORARY TABLE to_delete_ids SELECT id FROM table WHERE name = ?")
idsStatement.setString(1, name)
idsStatement.executeUpdate()
然后内部连接其他统计/查询以获得相同的结果:
val statementDeleteUsingIds = connection.prepareStatement(
"DELETE to_delete_rows FROM table2 to_delete_rows INNER JOIN to_delete_ids tdi ON tdi.id = to_delete_rows.other_tables_id")
statementDeleteUsingIds.executeUpdate()