如何获得ResultSet字符串数组?

我有一个查询是击中一个具有数组列的表。 当我正在处理我的记录,我想采取数组列的数据,并把它像一个字符串数组,并抓住第一个值。 我曾假设我可以做到以下几点:

while (resultSet.next()) { val clients = resultSet.getArray("clients") println(clients[0]) } 

但是当我这样做,我得到的错误:

错误:(34,3)Kotlin:未解决的参考。 由于接收器types不匹配,以下候选者都不适用:@InlineOnly public operator inline fun Map.get(key:Int):??? 在kotlin.collections中定义@SinceKotlin公共运算符乐趣MatchGroupCollection.get(name:String):MatchGroup? 在kotlin.text中定义

getArray返回typesArray! 所以我假设我可以通过索引访问值。 我需要做什么来访问这个值的数组?

实际上, getArray返回一个java.sql.Array

这和kotlin.Arraytypes不一样。

您可以在java.sql.Array上使用getArray ,将其简单地转换为Kotlin中的array

 resultSet.getArray("clients").array 

获取实际的数组作为Object / Any

你可以把它转换成一个Array

 val arr = resultSet.getArray("clients").array as Array 

或直接指定到所需的types,但您可能会得到一些ClassCastException

为了保持types安全,您可能需要类似的东西

 val firstClient = (resultSet.getArray("clients").array as? Array) ?.filterIsInstance() ?.firstOrNull() 

这会:

  • 如果数组不包含String ,则返回null
  • 如果数组为空,则结果为null
  • 如果数组包含一个String ,则返回第一个String