2011-12-12 57 views
0

從類創建對象獲取MySQL數據我想不從類創建對象來從MySQL數據如何不需要在Java

通常我做這樣的事情

public ArrayList getInventoryByItemId(String ItemId) throws SQLException { 
    ArrayList list = new ArrayList<Inventory>(); 
    String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'"; 
    Statement stmt = con.createStatement(); 
    ResultSet rset = stmt.executeQuery(sql); 
    while (rset.next()) { 
     a = new Inventory(rset.getInt(1), rset.getInt(2), rset.getString(3), rset.getString(4), rset.getTimestamp(6), rset.getString(7), rset.getString(8)); 
     list.add(a); 
    } 
    return list; 
} 

問題是因爲Inventory對象不沒有來自加入用戶表的用戶數據,我無法創建新的Inventory

我只想自動創建一個對象,它具有所有數據屬性,我可以使用列名訪問它。

謝謝

+0

從你的問題看來,你的主要問題是'sql'沒有返回任何記錄,因爲不滿意的連接標準。是對的嗎 ? –

回答

2

如果我把你的問題,

您可以創建新的地圖(HashMap的我建議),並把使用列名或索引作爲鍵值。 因此,你的清單將是地圖清單。

while (rset.next()) { 
     a = new HashMap<Integer,Object>(); 
     a.put(1,rset.getInt(1)); 
     .......... 
     list.add(a); 
    } 

或者,如果你知道列的確切數字,您可以通過用戶數組,而不是地圖(它會更快)

+0

什麼類型應該列出?我試過HashMap list = new HashMap()但是它說add(HashMap)不好 – bbnn

+0

List list = new ArrayList (); –

+0

它適用於這個ArrayList list = new ArrayList(); 非常感謝! – bbnn

0

根據你說的話,我認爲你的查詢沒有返回數據,因爲廣告資源沒有加入的用戶數據。您需要修改查詢以使用左外部聯接。

String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i LEFT JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'" 

這將允許您的查詢返回庫存數據,即使相應的用戶數據不存在。

+0

對不起,我誤解了這個問題。您可以使用HashMaps來存儲列數據。 –