在我的项目中,我使用了txtAdvance的关键事件。
double gtotal = Double.parseDouble(txtGtotal.getText());
double ad = Double.parseDouble(txtAdvance.getText());
double due = gtotal - ad;
txtDue.setText(String.valueOf(due));
在最后一行运行后,我添加了一个保存按钮来保存这些数据。以下是该查询。
public void saveInvoice(JTextField txtgtotal, JTextField txtAdvance, JTextField txtDue, JTextField txtInID) {
try {
db.putData("INSERT INTO indetails(inid, gtotal, advance, due) VALUES( '" + txtInID.getText() + "' ,'" + txtgtotal.getText() + "' , '" + txtAdvance.getText() + " ' " + " , '" + txtDue.getText() + "') ");
JOptionPane.showMessageDialog(null, txtAdvance.getText());
JOptionPane.showMessageDialog(null, "Invoice details saved");
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, this.getClass().getName() + " first " + e);
}
}
我在第1行的'advance'栏中截断了MySql数据。 advance的数据类型是Double。但我找不到放长度的方法。
(作为一个例子
列名:iid,数据类型:Int(18){主键}
列名:inid,数据类型:Int(18)
列名:gtotal,数据类型:双重
列名:advance,数据类型:Double
列名:到期,数据类型:双重
)
我正在使用MySQL查询浏览器。问题是当我向txtAdvance添加0值时,我遇到了这个错误。
答案 0 :(得分:1)
如果您要保存的数据包含小数点,则将提前的数据类型更改为双重,长度 10, 3 其中 10 表示位数, 3 表示小数位数。
使用此查询
db.putData("INSERT INTO indetails(inid, gtotal, advance, due) VALUES(" + txtInID.getText() + "," + txtgtotal.getText() + "," + txtAdvance.getText() + "," + txtDue.getText()+")");
答案 1 :(得分:1)
不应手动创建查询,而应使用db驱动程序:
PreparedStatement putData = con.prepareStatement(" INSERT INTO indetails(inid,gtotal,advance,due)VALUES(?,?,?,?)");
double gtotal = Double.parseDouble(txtGtotal.getText());
double ad = Double.parseDouble(txtAdvance.getText());
double due = gtotal - ad;
putData.setInt(1, inid);
putData.setDouble(2, gtotal);
putData.setDouble(3, ad);
putData.setDouble(4, due);
try {
putData.execute();
JOptionPane.showMessageDialog(null, txtAdvance.getText());
JOptionPane.showMessageDialog(null, "Invoice details saved");
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, this.getClass().getName() + " first " + e);
}