如何获得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.Array
types不一样。
您可以在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