簡體   English   中英

java mysql數據截斷:日期值不正確:''錯誤

[英]java mysql Data truncation: Incorrect date value: '' error

我試圖使用java preparedStatement將日期參數傳遞給mysql存儲過程。 但無論變量是否填充,我都會收到錯誤

**com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: ''** 

根據數據庫模式,dateofbirth列可以為null

我不確定為什么會出現錯誤。 我正在使用字符串輸入並使用以下代碼將其轉換為sql日期:


if(!dob.equals("")){
        try {
            contact.setDob(new Date(format.parse(dob).getTime()));
            System.out.println("New date:" + contact.getDob());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }else{
        contact.setDob(null);
    }

我的存儲過程如下:

DELIMITER $$

DROP PROCEDURE IF EXISTS `Contacts`.`InsertContactInfo` $$
CREATE PROCEDURE `Contacts`.`InsertContactInfo` (salutation Text, category Text, firstName varchar(45), middleName varchar(45), lastName varchar(45), dob date, dom date, sex char(1), email varchar(30))
BEGIN
Insert into contact_info(Salutation,Category,sex,FirstName,LastName,MiddleName, DateofBirth, DateofMarriage, Email)
Values(salutation,category,sex,firstname,middlename,lastname,dob,dom,email);

END $$

DELIMITER ;

並使用以下代碼輸入數據:

java.sql.PreparedStatement statement = con.prepareStatement("call InsertContactInfo(?,?,?,?,?,?,?,?,?)");
        statement.setString(1, contact.getSalutation());
        statement.setString(2, contact.getCategory());
        statement.setString(3, contact.getSex());
        statement.setString(4, contact.getFirstName());
        statement.setString(5, contact.getLastName());
        statement.setString(6, contact.getMiddleName());
        if(contact.getDob()!= null){
            statement.setDate(7, contact.getDob());
        }else{
            statement.setNull(7, Types.DATE);
        }
        if(contact.getDom()!= null){
            statement.setDate(8, contact.getDom());
        }else{
            statement.setDate(8, null);
        }
        statement.setString(9, contact.getEmail());
        statement.executeUpdate();

不知道哪里弄錯了。 有任何想法嗎?

字段排序不正確。 性領域排在第8位。

pStmt = conn.prepareStatement("call InsertContactInfo(?,?,?,?,?,?,?,?,?)");
        pStmt.setString(1, "Mr");
        pStmt.setString(2, "Customer");
        pStmt.setString(3, "Gangadhar");
        pStmt.setString(4, "" );
        pStmt.setString(5, "T" );
        pStmt.setDate(6, null);
        pStmt.setDate(7, null);
        pStmt.setString(8, "M");
        pStmt.setString(9, "XXXXX");
        pStmt.executeUpdate();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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