我正在使用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);
}
}
答案 0 :(得分:2)
实际上,第1列中的值是从数据库表中选择的,而第2列值是使用jTextField手动输入并转移到第2列
扩展TableModel并覆盖setValueAt()方法。
每当第1列或第2列中的值发生更改(并且都包含非空值)时,您应该计算产品并更新第3列。
答案 1 :(得分:0)
不要使用java,而是使用参数化查询,例如执行类似
的操作query="select name, i_price, @qty,@total, @qty*@total from food where i_name=@name"
将参数添加到查询中,将其值设置为qt,tot和st,Bob是你母亲姐姐的兄弟,你也没有潜在的sql注入攻击......