使用哈希映射使用相同表的相同列从数据库中获取数据

时间:2015-07-18 05:31:49

标签: sql oracle jsp hashmap

我想使用hashmap从数据库中获取数据。

例 - 表名称菜单

Restaurant_ID Item_Name Price Category
    1101        Burger    59    A
    1101        pizza     101   A
    1101        colddrink  40   B
    1101        bread      30   B

输出必须像这样

A类

Item_name      Price
Burger          59
Pizza           101

B类

Item_name      Price
colddrink       40
bread           30

我想从表格菜单中获取这样的数据到我的jsp页面。

请帮帮我。 我已经尝试了这么多,但我没有得到我需要的输出。

1 个答案:

答案 0 :(得分:1)

我在这里使用了ArrayList,但它会从您的代码中提供相同的输出:

第1步:将Table_Name_Menu表格中的所有类别转换为ArrayList

public static ArrayList<Characters> getCategories(Connection con) throws SQLException {

    Statement stmt = null;
    String query =
        "select distinct(Category) from Table_Name_Menu order by Category ASC";

    stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    ArrayList<Character> categories = new ArrayList<Character>();

    while (rs.next()) {
        char category = rs.getString("Category").charAt(0);
        categories.add(category);
    }
    //This way, all the categories will come in categories Arraylist

    stmt.close();
    return categories;
}

注意:这是一个未编译的代码。请相应地放置Try和Catch块。

步骤2:遍历您的categories ArrayList,并针对每个类别,准备一个新查询,以获取与该特定Category

对应的所有内容
for(Iterator<Character> i = category.iterator(); i.hasNext(); ) {
    Statement stmt = null;
    stmt = con.createStatement();

    char newCategory = i.next();
    String query2 = "select Item_name, Price from Table_Name_Menu where Category = \"" +  newCategory + "\"";
    ResultSet rs = stmt.executeQuery(query2);

    //This prints the contents of the new Category
    System.out.println("Category : " + newCategory):
    while(rs.next()){
        System.out.println(rs.getString(1)); //Item Name
        System.out.println(rs.getString(2)); //Item Price
    }
    stmt.close();

    System.out.println("\n\n"); //Gap Between categories
}

这样您就可以获得与特定类别相对应的所有内容。