Java MySql Coumn not found



Hy!我正在使用JDBC MySql Java项目,并试图将服务器数据库中的int值(Id Category)和String值(Name of meat)保存在简单的Java哈希图中。但每次我尝试在哈希图中调试代码时,都只保存特定类别膳食的最后一条记录中的值。例如,在我的桌子"naziv_jela"上,我有:(餐名,id_category),希腊沙拉1,金枪鱼酱1,腌凤尾鱼1,生寿司1,黑意大利饭2,番茄意大利面2,蘑菇馅2,杏仁意大利面2。每顿饭都有自己的ID,他的名字和类别的ID,我只想把类别ID和饭的名字保存在哈希图中,但它总是特定类别的最后一个值,例如在上面的8条记录中,它只保存每个类别的ID为1的排寿司和ID为2的杏仁意大利面(最后值)。我不知道为什么它只保存最后一个值???我需要在我的哈希图中包含所有类别的所有餐点。这是我的代码:

queryZaJela="SELECT id_kategorija, naziv_hrane FROM `naziv_jela`";
Map <Integer,String>PopisJela = new HashMap<Integer, String>();
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://"
                + "localhost:3306/room_service", "root", "");
        Statement Stat = (Statement) con.createStatement();
        ResultSet Rez = Stat.executeQuery(queryZaJela);
        while (Rez.next()) { 
            PopisJela.put(Rez.getInt("id_kategorija"), Rez.getString("naziv_hrane") );
        } 

您需要Map<Integer,Collection<String>>>

映射为每个键存储一个单个值,而当前您只存储一个字符串(从数据库中读取的最后一个字符串)。您需要存储一个字符串集合(例如,一个列表),并执行以下操作:

if (map.get(id) == null) {
   map.put(id, new ArrayList<String>());
}
map.get(id).add(name);

因此,您首先检查特定密钥的初始化集合,如果不存在,则创建一个然后根据需要填充集合。

你会发现各种开源解决方案,让你的生活更轻松,例如谷歌的MultiMap

在您的示例中,您正在尝试执行以下操作。

让我们只考虑类别1的结果。

1、金枪鱼头1、腌凤尾鱼1、生寿司1、黑色意大利调味饭

之前循环金枪鱼肉馅饼是空的。

在迭代并放入哈希图时

PopisJela.put(1,"金枪鱼头");//第一次迭代

PopisJela.put(1,"腌凤尾鱼");//第二次迭代用"腌凤尾鱼"代替"金枪鱼酱"

PopisJela.put(1,"生寿司");//第三次迭代用"生寿司"取代"腌凤尾鱼"的价值

PopisJela.put(1,"黑色意大利调味饭");//第四次也是最后一次迭代,用"黑意大利饭"取代"生寿司"的价值

所以,在标签图PopisJela中,你总是只有最后一个值。

因此,在您的案例中,请按照以下方式创建hashmap。

映射>>PopisJela=新的HashMap>();

结果集Rez=Stat.executeQuery(queryZaJela);

    while (Rez.next()) { 
        if(PopisJela.get(Rez.getInt("id_kategorija") == null){
               List<String> meals = new ArrayList<String>();
               meals.add(Rez.getString("naziv_hrane"));
               PopisJela.put(Rez.getInt("id_kategorija"), meals);
         }else{
               List<String> meals = (List<String>)      PopisJela.get(Rez.getInt("id_kategorija"));
               meals.add(Rez.getString("naziv_hrane"));
        }
    }

相关内容

  • 没有找到相关文章

最新更新