将结果集中的varchars放入ArrayList中

时间:2012-02-20 09:57:35

标签: java jdbc

我正在尝试从表中的一个特定列获取数据,然后从中创建一个arrayList。我这样做是因为我需要能够搜索结果集的内容。

所以我获取结果集,然后对其执行getArray以获取该列的数据作为数组,

regionValidRS.getArray("REGION")

但它给了我这个例外:

Invalid column type: getARRAY not implemented for class oracle.jdbc.driver.T4CVarcharAccessor

据我所知,我认为这意味着没有实现将varchars作为数组获取的方法。 即我不能使用getArray方法,并且必须手动遍历所有元素以将它们插入到ArrayList中。

还有其他办法吗?优选地,更快的方法不涉及遍历所有元素?

3 个答案:

答案 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,则获取值。您将字符串存储在您正在构建的列表中。没有更快的方法。