簡體   English   中英

Java:MySQL數據截斷:不正確的雙精度值:“”列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM