2013-07-08 15 views
1

我不知道如何使用hashmap和while循環從我的數據庫檢索數據。 PLZ幫助我。
我的代碼是java的mysql編碼使用hashmap和while循環來檢索數據

package com.glomindz.mercuri.dao; 

    import java.sql.Connection; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 
    import java.util.HashMap; 

    import com.glomindz.mercuri.util.MySingleTon; 

      public class UserServicesDAO { 

private Connection connection; 

public UserServicesDAO() { 
    //connection = new MySingleTon().getConnection(); 
    connection = MySingleTon.getInstance().getConnection(); 

} 

public void get_all_data() { 
    HashMap<Integer, String> result = new HashMap<Integer, String>(); 
    String query = "SELECT * FROM spl_user_master"; 
    try { 
     PreparedStatement stmt = connection.prepareStatement(query); 
     boolean execute = stmt.execute(); 
     System.out.println(execute); 
     ResultSet resultSet = stmt.getResultSet(); 
     System.out.println(resultSet.getMetaData()); 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public static void main(String[] args) { 
    new UserServicesDAO().get_all_data(); 
} 
} 

有什麼不好的代碼?

+0

我不知道......不要告訴我們什麼是錯? – Thihara

+0

將所有數據映射到HashMaps對於作爲發佈產品一部分的任何代碼來說都是一個非常糟糕的主意。我只是轉向了一家標準的公司,這是一個不穩定的不可讀代碼。我希望那些幾年前設計的程序員有一天會死於痛苦的死亡。 – ssindelar

回答

5

你可以從你的記錄值在一​​個循環中這樣

ResultSet resultSet = stmt.getResultSet(); 
while (resultSet.next()) { 
    String someStringValue = resultSet.getString("some_column_name"); 
    int someIntegerValue = resultSet.getInt("some_other_column_name"); 
    //... 
} 
0

你正在創建一個地圖,你不還,還你不把SQL結果在地圖結果:

public Map<Integer, String> get_all_data() { 
    HashMap<Integer, String> result = new HashMap<Integer, String>(); 
    String query = "SELECT * FROM spl_user_master"; 
    try { 
     PreparedStatement stmt = connection.prepareStatement(query); 
     boolean execute = stmt.execute(); 
     System.out.println(execute); 
     ResultSet resultSet = stmt.getResultSet(); 
     System.out.println(resultSet.getMetaData()); 
     while (resultSet.next()) { 
       result.put(resultSet.getInt(...), resultSet.getString(...)); 
     } 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return result; 
} 

在上面的代碼...應該是列名

+0

我已經修改了我的代碼,但隨後發出消息java.sql.SQLException:未找到列'SELECT * FROM spl_user_master'。 –

+0

不知道你在做什麼,但在上面的代碼'...'應該由列名替換,而不是由SQL查詢 – Guillaume

+0

我的表中有8列如何編寫代碼 –