【发布时间】:2013-10-03 09:11:36
【问题描述】:
在我的项目中,我使用了 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,数据类型:Double
列名:advance,数据类型:Double
列名 em>:到期,数据类型:双
)
我正在使用 MySQL 查询浏览器。问题是当我向 txtAdvance 添加 0 值时,我遇到了这个错误。
【问题讨论】:
-
我正在使用 JDBC 连接。
-
putData方法是什么?为什么不使用PreparedStatement? -
您的 PreparedStatement 应该是:
"INSERT INTO indetails(inid, gtotal, advance, due) VALUES(?,?,?,?)并且您应该使用setDouble(2, ad)来设置advance列。 -
@aged 我认为我的查询是正确的,如你所说。对不起,我在 mysql 查询浏览器中找不到设置高级 cloumn。你能解释一下吗?我会非常感谢你的。
-
请看下面我的回答