2015-07-10 59 views
1
package com.bean; 
import java.util.HashMap; 
import java.util.Map; 

public class Cheese extends Item { 
    public CheeseType cheeseType ; 
    public Map<Ingred,Float> calorieTable = new HashMap<Ingred,Float>(); 


    public Cheese() { 
    } 
    public CheeseType getCheeseType() { 
     return cheeseType; 
    } 

    public void setCheeseType(CheeseType cheeseType) { 
     this.cheeseType = cheeseType; 
    } 

    public Map<Ingred, Float> getCalorieTable() { 
     return calorieTable; 
    } 

    public void setCalorieTable(Map<Ingred, Float> calorieTable) { 
     this.calorieTable = calorieTable; 
    } 
} 

这是存在于数据库中的类。我不知道如何采取脂肪,蛋白质和维生素的价值在那里的成分枚。如何从具有类型的数据库中检索值

层次是

Cheese.java 
-Cheese 
--calorieTable 
--cheeseType 
--Cheese() 
--getCalorieTable():Map<Ingred,Float> 
--getCheeseType():CheeseType 
--setCalorieTable(Map<Ingred,Float>) 
--setCheeseType(CheeseType) 

CheeType.java 
-CheeseType(Enum) 

--Cheddar 
-Cottage 
--Easy_spread 
--Mozzarella 

Ingred.java 
-Ingred(Enum) 
---fat 
--protein 
--vitamin 


- 

我曾尝试是

public List<Item> readAllItemsFromDb() { 
     // TODO Auto-generated method stub 
     con=(Connection)DatabaseConnectionManager.conn; 
     Statement st = null; 
     try { 
      st = con.createStatement(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     ResultSet srs = null; 
     try { 
      srs = st.executeQuery("SELECT * FROM cheese_tbl"); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     try { 
      while (srs.next()) { 

       Cheese cheese = new Cheese(); 


       cheese.setId(srs.getInt("SrNo")); 
       cheese.setDescription(srs.getString("description")); 
       cheese.setWeight(srs.getFloat("weight")); 
       cheese.setPrice(srs.getFloat("price")); 
       cheese.setManufacturingDate(srs.getDate("mfg_date")); 
       cheese.setUseBeforeMonths(srs.getInt("UsebeforeInmonths")); 

       if(srs.getString("CheeseType").equals("Mozzarella")) 
         cheese.setCheeseType(CheeseType.Mozzarella);    
        else if(srs.getString("CheeseType").equals("Easy_Spread")) 
        cheese.setCheeseType(CheeseType.Mozzarella); 
        else if(srs.getString("CheeseType").equals("Cottage")) 
         cheese.setCheeseType(CheeseType.Mozzarella);    
        else if(srs.getString("CheeseType").equals("Cheddar")) 
         cheese.setCheeseType(CheeseType.Mozzarella); 




      } 

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

    return null; 

} 

但我没有得到如何检索的蛋白质,脂肪和维生素值。

我能够从数据库中检索其他值。该数据库具有以下字段

CREATE TABLE `cheese_tbl` (
    `id` int(10) DEFAULT NULL, 
    `description` varchar(100) DEFAULT NULL, 
    `weight` float DEFAULT NULL, 
    `price` float DEFAULT NULL, 
    `mfg_date` date DEFAULT NULL, 
    `UseBeforeInMonths` int(3) DEFAULT NULL, 
    `cheeseType` varchar(20) DEFAULT NULL, 
    `protein` float DEFAULT NULL, 
    `vitaminB1` float DEFAULT NULL, 
    `fat` float DEFAULT NULL 
) 

INSERT INTO `cheese_tbl` VALUES 
(1001,'Mozzarella Cheese - Best for Pizza Preparation',200,200,'2014-01-09',12,'Mozzarella',30,0.57,0.33), 
(1002,'Goat Cheese Low calories -Easy Spread',300,300,'2014-01-10',3,'Easy_Spread',0.33,33.99,0.57), 
(1003,'Cottage Cheese High Protine and Energy',400,400,'2014-05-28',6,'Cottage',0.33,20.2,0.57); 

回答

0

有一个从数据库填补了地图:

Map<Ingred,Float> map = cheese.getCalorieTable(); 
map.put(Ingred.protein,srs.getFloat("protein")); 
map.put(Ingred.vitamin,srs.getFloat("vitaminB1")); 
map.put(Ingred.fat,srs.getFloat("fat")); 

如果HashMap的犯规是否存在:

Map<Ingred,Float> map = new HashMap<Ingred,Float>(); 
map.put(Ingred.protein,srs.getFloat("protein")); 
map.put(Ingred.vitamin,srs.getFloat("vitaminB1")); 
map.put(Ingred.fat,srs.getFloat("fat")); 
cheese.setCalorieTable(map); 

那我劝你纠正这一点:

if(srs.getString("CheeseType").equals("Mozzarella")) 
    cheese.setCheeseType(CheeseType.Mozzarella);    
else if(srs.getString("CheeseType").equals("Easy_Spread")) 
    cheese.setCheeseType(CheeseType.Mozzarella); 
else if(srs.getString("CheeseType").equals("Cottage")) 
    cheese.setCheeseType(CheeseType.Mozzarella);    
else if(srs.getString("CheeseType").equals("Cheddar")) 
    cheese.setCheeseType(CheeseType.Mozzarella); 

to

if(srs.getString("CheeseType").equals("Mozzarella")) 
    cheese.setCheeseType(CheeseType.Mozzarella);    
else if(srs.getString("CheeseType").equals("Easy_Spread")) 
    cheese.setCheeseType(CheeseType.Easy_Spread); 
else if(srs.getString("CheeseType").equals("Cottage")) 
    cheese.setCheeseType(CheeseType.Cottage);    
else if(srs.getString("CheeseType").equals("Cheddar")) 
    cheese.setCheeseType(CheeseType.Cheddar); 

和更好的是

cheese.setCheeseType(CheeseType.valueOf(srs.getString("CheeseType"))); 

Lookup enum by string value

+1

太感谢你了.. – sss