2014-04-04 82 views
-1

我对整个SQL和Java的东西都很陌生,但在这里我真的很困惑。从结果集中构建数组?

我有一个其通过援引几个阵列参数调用的方法,如以下

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

我正在做一个结果集进行检查,看是否有可用的任何行,其中有一个ID匹配搜索到的项目。

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

但是,我完全在这里如何构建方法难住。

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

该死的,我以为我做得很好。

+0

因为你不知道你会得到多少结果,所以在将它们分配给一个静态结构(数组)之前,一个实际的方法是首先将它们存储在一个动态结构中(比如'java.util.List')。 – SJuan76

+0

“String []和int []参数是存储在数据库中的”因此,您有两个数组包含来自数据库的每行不同列的值吗?你应该真的创建一个表示你的数据库存储的类,并且有一个集合(可能是某种List,也许是一个ArrayList,而不是一个数组)。 –

回答

0

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

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

您可以使用功能

rs.getArray()

与COLUMNNAME或ColumnLabel。 但是这个函数返回对象数组,你可以把它转换为Integer和String。