我有一个查询,该查询命中具有数组列的表。在处理记录时,我想获取数组列的数据并将其视为字符串数组并获取第一个值。我以为我可以做以下事情:
while (resultSet.next()) {
val clients = resultSet.getArray("clients")
println(clients[0])
}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到了错误:
错误:(34,3)Kotlin:未解决的参考。由于接收者类型不匹配,以下候选者都不适用:@InlineOnly公共运营商inline fun <@OnlyInputTypes K,V> Map.get(key:Int):??? 在kotlin.collections中定义@SinceKotlin公共运算符fun MatchGroupCollection.get(name:String):MatchGroup吗?在kotlin.text中定义
getArray返回类型,Array!所以我假设我可以按索引访问值。我需要做什么才能访问此值数组?
实际上,getArray返回java.sql.Array。
这与kotlin.Array类型不同。
您可以getArray在上使用java.sql.Array,只需array在Kotlin 中将其翻译为:
resultSet.getArray("clients").array
Run Code Online (Sandbox Code Playgroud)
将实际数组作为Object/ Any。
您可以将其转换为Array<out Any?>:
val arr = resultSet.getArray("clients").array as Array<out Any?>
Run Code Online (Sandbox Code Playgroud)
或直接更改为所需的类型,尽管这样可能会得到一些ClassCastException。
为了保持类型安全,您可能需要类似
val firstClient = (resultSet.getArray("clients").array as? Array<out Any?>)
?.filterIsInstance<String>()
?.firstOrNull()
Run Code Online (Sandbox Code Playgroud)
这会:
null如果数组不包含Stringsnull数组为空String如果数组包含一个String| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |