【发布时间】:2011-10-02 21:24:54
【问题描述】:
我正在尝试通过 java 面板更新用户的个人详细信息。面板具有 user_id(自动生成)、姓名、出生日期等字段。 问题是当我在 java 面板中的出生日期字段中输入任何内容然后保存时。它给了我上面提到的错误。 我试图通过直接使用mysql数据库将null插入出生日期(日期数据类型)字段来验证它。它没有给出错误。 为什么我通过java面板插入时不取空字符串,而直接使用mysql插入时取空字符串。
CREATE TABLE `userpersonaldetail` (
`User_Id` int(10) unsigned NOT NULL auto_increment,
`Name` varchar(45) default NULL,
`Date_Of_Birth` date default NULL,
`Address` varchar(300) default NULL,
`Phone` varchar(20) default NULL,
`Mobile` varchar(20) default NULL,
`Email` varchar(50) default NULL,
PRIMARY KEY (`User_Id`),
CONSTRAINT `FK_userpersonaldetail_1` FOREIGN KEY (`User_Id`) REFERENCES `usermaster` (`User_Id`)
)
而发生异常的部分代码是:
try
{
con=(Connection) DBConnection.getConnection();
pstmt=(PreparedStatement) con.prepareStatement("Update userpersonaldetail set "+
"name=?,date_of_birth=?,address=?,phone=?,mobile=?,email=? where user_id=?");
pstmt.setInt(7,perBean.getUserId());
pstmt.setString(1,perBean.getName());
pstmt.setString(2,perBean.getDateOfBirth());
pstmt.setString(3,perBean.getAddress());
pstmt.setString(4,perBean.getPhone());
pstmt.setString(5,perBean.getMobile());
pstmt.setString(6,perBean.getEmail());
int i=pstmt.executeUpdate();
}
这里 perBean 是从 gui 中检索值的 javaBean。在其中一个测试用例中,我将 date_of_birth 文本框保留为 null,这在存储到 DB 时会出错。
【问题讨论】: