2014-04-04 119 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。