[英]Java: MySQL Data truncation: Incorrect double value: '' for column
由於我們正在處理大量數據,因此有一種方法可以生成查詢。
...
switch(operation) {
case "insert":
query +="INSERT INTO " + table + " SET ";
for(int i=0; i<columns.size(); i++) {
query += "`"+columns.get(i)+"`='"+values.get(i)+"',";
}
query=query.substring(0, query.length()-1); //to remove the last " , " from the string
query += ";";
break;
...
當我們運行由它生成的查詢時,此方法將生成此錯誤消息:
Data truncation: Incorrect double value: '' for column 'HITELKERET' at row 1
該方法生成的查詢字符串為:
INSERT INTO szallvev
SET `NEV2`='',`BANKSZAMLA`=' - - ',
`BANK1`='',
`ORSZAG`='',
`BANK2`='',
`IBAN`='',
`SWIFT`='',
`IRSZAM`='',
`VAROS`='',
`UTCA`='',
`KTJELLEG`='0',
`HAZSZAM`='',
`EPULET`='',
`LEPCSOHAZ`='',
`EMELET`='',
`AJTO`='',
`ADOSZAM`='',
`KOZADOSZAM`='',
`UGYINTEZO`='',
`EMAIL`='',
`TELEFON`='',
`MOBIL`='',
`INTERNET`='',
`FAX`='',
`FIZMOD`='0',
`CSOPADO`='',
`MUNKASZAM`='',
`HITELKERET`='',
`DEVARSZINT`='0',
`KEDV1`='0',
`NAPOK`='',
`ELADO`='0',
`UZLETKOTO`='',
`AZONOSITO`='test',
`NEV1`='test';
問題是,當我從Java控制台復制此字符串並將其粘貼到MySQL編輯器(我使用SQLYOG)中時,查詢執行無任何錯誤。
根據錯誤提示和我的經驗,在拼接查詢字符串時,沒有為HITELKERET列獲得正確的數據類型。
看起來HITELKERET字段在數據庫表中應該是浮點類型。
請確保HITELKERET列不是空字符串,至少默認為0
我才發現自己是個白痴。 我只能保留空白字段,因此SQL不會嘗試從''讀取雙精度數。 我將方法更改為如下所示:
switch(operation) {
case "insert":
query +="INSERT INTO " + table + " SET ";
for(int i=0; i<columns.size(); i++) {
val = values.get(i);
if(val.length()>0) { // notice the if(), when the field has no value, it wont be put into the query string.
col = columns.get(i);
query+="`"+col+"` = '"+val+"',";
if(i%3==0) query+="\n";
}
}
query=query.substring(0, query.length()-1);
query += ";";
break;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.