我有一个查询正在访问具有数组列的表。当我处理我的记录时,我想获取数组列的数据并将其视为字符串数组并获取第一个值。我以为我可以做到以下几点:
while (resultSet.next()) {
val clients = resultSet.getArray("clients")
println(clients[0])
}
但是当我这样做时,我得到错误:
错误:(34,3)Kotlin:未解决的参考。以下都不是 由于接收器类型不匹配,候选者适用: @InlineOnly public operator inline fun< @OnlyInputTypes K,V> Map.get(key:Int):???在kotlin.collections中定义 @SinceKotlin公共运营商乐趣MatchGroupCollection.get(名称: 字符串):MatchGroup?在kotlin.text中定义
getArray
返回类型Array!
,所以我假设我可以按索引访问值。如何访问此数组值?
答案 0 :(得分:4)
实际上,getArray
会返回java.sql.Array
。
这与kotlin.Array
类型不同。
您可以使用getArray
on the java.sql.Array
,这只会在Kotlin中翻译为array
:
resultSet.getArray("clients").array
将实际数组作为Object
/ Any
。
您可以将其投放到Array<out Any?>
:
val arr = resultSet.getArray("clients").array as Array<out Any?>
或直接输入所需的类型,但结果可能会得到ClassCastException
个。
为了保持类型安全,您可能需要类似
的内容val firstClient = (resultSet.getArray("clients").array as? Array<out Any?>)
?.filterIsInstance<String>()
?.firstOrNull()
这将:
null
s ,则String
如果数组为空,null
String
,则String