有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将结果集中的varchar放入ArrayList

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

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

regionValidRS.getArray("REGION")

但它给了我一个例外:

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

据我所知,我认为这意味着没有实现将varchar作为数组获取的方法。 i、 e.我不能使用getArray方法来实现这一点,必须手动循环所有元素以将它们插入ArrayList

还有别的方法吗?最好是一种更快的方法,不涉及所有元素的循环


共 (3) 个答案

  1. # 1 楼答案

    getArray并不像你想象的那样。下面是the javadoc所说的:

    Retrieves the value of the designated column in the current row of this ResultSet object as an Array object in the Java programming language.

    Returns: an Array object representing the SQL ARRAY value in the specified column

    (我的)

    你必须在结果集中循环。这是唯一的办法

  2. # 2 楼答案

    要从Varchar列和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));
        }
    }
    

    不过,我建议在数据库端进行任何处理

  3. # 3 楼答案

    getArray方法用于从当前行读取数组列的值。(很少有数据库实现数组类型,许多人不知道它们。)您正试图将其与varchar列一起使用,但它就是不能这样工作

    在这种情况下,您需要做的是遍历结果集的行。在每一行中,如果该列包含getString,则获得该值。将字符串存储在正在生成的列表中。没有比这更快的方法了