我正在尝试从表中的一个特定列获取数据,然后从中创建一个arrayList。我这样做是因为我需要能够搜索结果集的内容。
所以我获取结果集,然后对其执行getArray以获取该列的数据作为数组,
regionValidRS.getArray("REGION")
但它给了我这个例外:
Invalid column type: getARRAY not implemented for class oracle.jdbc.driver.T4CVarcharAccessor
据我所知,我认为这意味着没有实现将varchars作为数组获取的方法。 即我不能使用getArray方法,并且必须手动遍历所有元素以将它们插入到ArrayList中。
还有其他办法吗?优选地,更快的方法不涉及遍历所有元素?
答案 0 :(得分:1)
getArray不会按照您的想法执行操作。以下是the javadoc所说的内容:
检索当前行中指定列的值 此ResultSet对象作为Java编程中的Array对象 语言。
返回:表示 SQL ARRAY值的Array对象 指定的列
(强调我的)。
您必须遍历结果集。这是唯一的方法。
答案 1 :(得分:0)
要选择Varchar
列和thoose到ArrayList
的值,请使用以下内容:
String sql = "Select yourCol From yourTable";
ArrayList<String> results = new ArrayList<>();
try(Connection con = getConnection(); PreparedStatement prep = con.prepareStatement(sql)){
try(ResultSet rs = prep.executeQuery()){
while (rs.next()){
results.add(rs.getString(1));
}
}
我建议在数据库方面进行任何处理。
答案 2 :(得分:0)
getArray
方法用于从当前行读取ARRAY列的值。 (很少有数据库实现数组类型,很多人都不知道它们。)你试图将它与varchar列一起使用,它就是这样。
在这种情况下,您需要做的是遍历结果集的行。在每行中,如果列具有getString,则获取值。您将字符串存储在您正在构建的列表中。没有更快的方法。