2013-09-27 52 views
1

在我的項目中,我使用了txtAdvance的關鍵事件。

第1行的列'advance'被截斷MySql數據

double gtotal = Double.parseDouble(txtGtotal.getText()); 
    double ad = Double.parseDouble(txtAdvance.getText()); 
    double due = gtotal - ad; 
    txtDue.setText(String.valueOf(due)); 

和第三行的運行後,我添加了一個Save按鈕保存這些數據。下面給出的是該查詢。

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。但我找不到一種方法來放長度。
(作爲一個例子
列名:獨立同分布,數據類型:int(18){主鍵}
列名:INID,數據類型:int(18)
列名:gtotal ,數據類型:雙
列名:預先,數據類型:雙
列名:由於,數據類型:雙

我正在使用MySQL查詢瀏覽器。問題是當我向txtAdvance添加0值時出現此錯誤。

+0

我正在使用JDBC連接。 – Dilini

+0

'putData'方法是什麼?你爲什麼不使用'PreparedStatement'? – agad

+0

Your PreparedStatement應該看起來像這樣:''INSERT INTO indetails(inid,gtotal,advance,due)VALUES(?,?,?,?)',你應該使用'setDouble(2,ad)'設置'advance'列。 – agad

回答

1

如果試圖保存有小數點的數據,然後用長度改變數據類型爲預先作爲10,3其中表示的位數和表示小數位數。

使用此查詢,

db.putData("INSERT INTO indetails(inid, gtotal, advance, due) VALUES(" + txtInID.getText() + "," + txtgtotal.getText() + "," + txtAdvance.getText() + "," + txtDue.getText()+")"); 
+0

@Dilini僅適用於所有**字符/ varchar/date/timestamp **數據類型我們必須使用**單引號**和**數字**我們不需要使用任何東西 – Ajeesh

+0

我接受它和我欠你很多,乾杯! – Dilini

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); 
} 
+0

@aged但putData.setInt(1,inid);不被識別爲方法,它只是在工作db.putData(sql query);我應該怎麼做? – Dilini

+1

在'putData'上面的代碼是'java.sql.PreparedStatement'類型的變量,所以'p utData.setInt(1,inid);'必須工作。 – agad

+0

@aged它也在工作。很高興有你們。 – Dilini

相關問題