0
java preparedStatement를 사용하여 mysql 저장 프로 시저에 날짜 매개 변수를 전달하려고합니다. 그러나 관계없이 변수가 채워집니다 여부, 나는 데이터베이스 스키마에 따라 오류java 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();
어디서 실수를하고 있는지 확실하지 않습니다. 어떤 아이디어?
는 아 ... 그 지금 잘 작동 .. 나는이에 시간을 소비하고 실수를 찾을 수 없습니다. 정말 어리석은 지금 .. 느낌 감사합니다 :) – flamesavor