我正在尝试通过java面板更新用户的个人详细信息.Panel包含user_id(自动生成),姓名,出生日期等字段。 问题是当我在java面板中输入出生日期字段时没有任何内容然后保存它。它给了我上面提到的错误。 我试图通过直接使用mysql数据库将null插入出生日期(Date数据类型)字段来验证它。它没有给出任何错误。 为什么在我通过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是javaBean,它从gui中检索值。在其中一个测试用例中,我将date_of_birth文本框保留为null,这在存储到DB时会出错。
答案 0 :(得分:1)
我最初的猜测是该字段被定义为'NOT NULL',这意味着它将强制您输入一个值......
如果您要对表执行mysql转储(或在某个工具中查看它),您可能会发现它定义如下:
`someDT` datetime NOT NULL
答案 1 :(得分:1)
我用最新版本替换旧版本的my-sql-connector jar(在服务器的lib文件夹中找到)。这解决了我的问题。
答案 2 :(得分:0)
啊,我现在看到,你不能插入''作为约会。你需要通过约会。
答案 3 :(得分:0)