Java 如何获得表中两列的乘积?

Java 如何获得表中两列的乘积?,java,swing,netbeans,jtable,jbutton,Java,Swing,Netbeans,Jtable,Jbutton,我正在使用Netbeans开发一个GUI桌面应用程序。我对总数做了一个验证,但没有显示结果。请检查编码天气,如果有一些变化要做或如果是错误的。当我执行它时,在第3列中显示错误,并且没有结果 private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) { Connection con; Statement stmt;

我正在使用Netbeans开发一个GUI桌面应用程序。我对总数做了一个验证,但没有显示结果。请检查编码天气,如果有一些变化要做或如果是错误的。当我执行它时,在第3列中显示错误,并且没有结果

private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    Connection con;
    Statement stmt;
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbc");
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null, ex);
    }
    try {
        con= DriverManager.getConnection("Jdbc:Odbc:food");
        stmt= con.createStatement();

        String st= JcbSub.getSelectedItem().toString();
        String qt= quantity.getText().toString();
        String query;

        Double u_p= (Double) jTable3.getValueAt(row, 1);
        Integer qut= (Integer) jTable3.getValueAt(row, 2);
        Double tot= u_p * qut; //product of column 1 & column 2


        query="select i_price from food where i_name='"+JcbSub.getSelectedItem()+"'";
        ResultSet rs= stmt.executeQuery(query);

        while(rs.next()){
        jTable3.setValueAt(st, row, 0);
        jTable3.setValueAt(rs.getString("i_price"), row, 1); 
        jTable3.setValueAt(qt, row, 2);
        jTable3.setValueAt(tot, row, 3);  //result column

        row ++;
        }

       } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);
    } 
}

实际上,第1列中的值是从数据库表中选择的,第2列的值是使用jTextField手动输入的,并传输到第2列

扩展TableModel并重写setValueAt()方法


当第1列或第2列中的值发生变化时(并且两者都包含非空值),您应该计算产品并更新第3列。

不要使用java,而是使用参数化查询,例如执行以下操作

query="select name, i_price, @qty,@total, @qty*@total from food where i_name=@name"
将参数添加到查询中,将它们的值设置为qt、tot和st,Bob是您母亲姐姐的兄弟,您也不会受到潜在的sql注入攻击


为什么不在查询中执行此操作,例如从表中选择X、Y、Z、X*Y作为总计???实际上,第1列中的值是从数据库表中选择的,第2列的值是使用jTextField手动输入的,并传输到第2列。如果是我,我将定义一个类来保存行,并使用Total函数。然后构建它们的集合,从何处填充它们,然后将其绑定到网格。或者只需将手动输入的值传递到查询Select iprice、@qty、@qty*iprice rom SomeTable,其中SomeKey=@KEYVALUE请您再详细说明一下,我不明白您的概念。