如何将2个数组相乘并显示到表中

时间:2014-09-18 02:15:17

标签: java mysql

我想将2个数组相乘并显示到表中,但此代码不起作用,此处此代码,请帮助我

public void hitung () 

    int hasil = 0;
    long nilai2 ;
    int quan = 0 ;
    int quans = 0;

    try {

            String sql = ("SELECT tbl_masakan.nama_masakan, banyak, tbl_masakan.harga_masakan FROM tbl_masakan, tbl_det_pesanan WHERE id_det_pesanan = '"+ id +"' and tbl_det_pesanan.id_masakan = tbl_masakan.id_masakan ");
            ResultSet rsuser= cn.stt.executeQuery(sql);
            rsmetadata = rsuser.getMetaData();
            while (rsuser.next()) {  

                int size = 0;

                   if (rsuser != null)
                   {
                       rsuser.beforeFirst();
                       rsuser.last();
                       size = rsuser.getRow();
                   }

                   String str = rsuser.getString(2);
                   quan = Integer.parseInt(str);
                   String strs = rsuser.getString(3);
                   quans = Integer.parseInt(strs);
                   hasil = hasil + (quan*quans);
            }

        } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e.toString());
        }

    txt1.setText(String.valueOf(hasil));
}

1 个答案:

答案 0 :(得分:0)

您的代码存在一些小问题。

  1. 有定义但从未使用的变量,就像size和rsmetadata(未在您发布的代码中声明的那样)的情况一样。
  2. 没有必要将数据库中的列作为字符串进行检索,然后使用Integer.parseInt()执行转换。您可以使用rsuser.getInt(columnIndex)直接将它们作为整数检索。
  3. Statement类的方法executeQuery(String sql)的文档说它返回“包含给定查询生成的数据的ResultSet对象;从不为null”,因此不需要检查null。
  4. 我的猜测是你的问题的原因(尽管你实际上没有说过代码的输出是什么)是计算ResultSet的大小。注意它使光标指向最后一个位置(rsuser.last()),因此你的while(rsuser.next()){...}循环应该只运行一次。如果由于某种原因确实需要计算大小,则应该在while()循环之前执行此操作,并确保再次调用rsuser.beforeFirst(),以便在进入循环之前光标指向Resultset的开头。在这种情况下,您的代码应如下所示:

        String sql = ...;
        ResultSet rsuser= cn.stt.executeQuery(sql);
        // calculate size
        int size = 0;
        if (rsuser.last()) {
           size = rsuser.getRow();
           rsuser.beforeFirst();
        }
    
        while (rsuser.next()) {  
            quan = rsuser.getInt(2);
            quans = rsuser.getInt(3);
            hasil = hasil + (quan*quans);
        }
    

    最后,请注意这种计算ResultSet大小的方法并非没有问题,所有这些都在本讨论中明确指出: How do I get the size of a java.sql.ResultSet?

相关问题