检索ResultSet的id并以java.sql.Array的形式返回



我有以下内容:

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()

最新更新