我正在尝试通过java panel.Panel更新用户的个人详细信息,其中包含user_id(自动生成)、姓名、出生日期等字段。问题是当我没有在java面板的出生日期字段中输入任何内容,然后保存它。它给出了上面提到的错误。我尝试通过直接使用mysql database.There在出生日期(日期数据类型)字段中插入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.In中检索值的javaBean,这是我将date_of_birth文本框保留为空的测试用例之一,这在存储到DB时给出了错误。
发布于 2011-07-11 23:07:54
我最初的猜测是该字段已定义为“非空”,这意味着它将强制您输入一个值……
如果您要对表执行mysql转储(或在某些工具中查看它),您可能会发现它被定义为:
`someDT` datetime NOT NULL发布于 2015-02-04 22:31:15
我用最新版本替换了旧版本的my-sql-connector jar (可以在服务器的lib文件夹中找到)。这解决了我的问题。
发布于 2011-07-12 16:27:39
啊,我明白了,你不能插入'‘作为日期。你需要传递一个日期。
https://stackoverflow.com/questions/6652213
复制相似问题