如何获取结果集字符串数组?



我有一个查询,它正在访问一个具有数组列的表。 当我处理我的记录时,我想获取数组列的数据并将其视为字符串数组并获取第一个值。 我以为我可以做到以下几点:

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

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

错误:(34, 3) Kotlin:未解析的引用。以下均不具备以下任何一项 由于接收器类型不匹配,候选者适用: @InlineOnly公共运营商内联乐趣<@OnlyInputTypes K,V> Map.get(key: Int): ???在 Kotlin.collections 中定义 @SinceKotlin公共运营商趣味MatchGroupCollection.get(名称: 字符串):匹配组?在 Kotlin.text 中定义

getArray返回类型Array!,所以我假设我可以按索引访问值。 我必须做什么才能访问此值数组?

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

这与kotlin.Array类型不同。

您可以在java.sql.Array上使用getArray,只需将其转换为 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()

这将:

  • 如果数组不包含String秒,则导致null
  • 如果数组为空,则导致null
  • 如果数组包含String则在第一个String中生成
  • 结果

相关内容

  • 没有找到相关文章

最新更新