从ResultSet构建数组?

时间:2014-04-04 08:48:07

标签: java sql jdbc

我对整个SQL和Java事情都很陌生,但在这里我真的很困惑。

我有一个通过调用一些数组参数来调用的方法,如下所示

Method(String[], int, int[], int[])

我正在做一个ResultSet来检查是否有任何行可用,其中搜索项目的ID匹配。

ResultSet group = statement.executeQuery("SELECT * FROM `circulation` WHERE `ItemID` = "+itemID);

但是,我完全不知道如何构建方法。

String []和int []参数是存储在数据库中的内容,而标准i​​nt参数是itemID。我不知道如何正确地调用方法。

Darn,我以为我也做得很好。

3 个答案:

答案 0 :(得分:2)

参数通常用于向被调用的方法提供信息。要从被调用的方法获取信息,通常使用返回值。

您的方法似乎搜索名为circulation的数据库表中的行以获取给定的项ID。因此,项目ID应该是一个参数。找到的行应该是返回的值。因此,该方法的签名应为:

Circulation[] findByItemId(int itemId);

或者更好,使用集合而不是数组:

List<Circulation> findByItemId(int itemId);

什么是Circulation?它是一个表示循环表中包含的行的类。因此,如果表包含ID,名称和项ID,则此类看起来像

public class Circulation {
    private int id;
    private String name;
    private int itemId;

    // constructor, getters, and other useful methods omitted for brevity
}

因此,您的findByItemId()方法将创建一个空的循环列表,然后迭代结果集的行,为每一行构造一个Circulation实例,并将该实例添加到列表中。然后它将返回该列表。

最后,您正在使用串联来构建带有参数的SQL查询。这很危险。您应该使用预先准备好的声明。阅读the tutorial关于他们的信息。

答案 1 :(得分:0)

看看Apache commons-dbutils。它是JDBC的简单包装器,允许您将结果集转换为任何标准数据结构

答案 2 :(得分:-1)

您可以使用功能

  

rs.getArray()

使用columnName或ColumnLabel。 但是这个函数返回对象数组,你可以将它转换为Integer和String。