有测试框架。mock可以模拟测试而不对数据库操作省去还原数据库的麻烦。或者直接编写junit测试操作数据库。但是这样要在操作后还原数据库。
昌邑网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联公司于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
息 不报错 确修改失败了
java mysql修改信息 不报错 确修改失败了_数据库字段异常可能是mysql严格模式导致...

IvanhoeBlack
原创
关注
0点赞·498人阅读
最近,新手同事Java开发中遇到数据库报错:
“ java.sql.SQLIntegrityConstraintViolationException: Column 'create_time' cannot be null”
而且开发环境上没有出现,生产环境上才会出现。看过后告诉他是mysql strict mode(严格模式)导致。生产环境的mysql版本比较高,打开了相关配置。
5.6.6 版本后默认打开严格模式。
这其实是一个常见问题,和mysql 打交道时比较容易遇到。
一、查看sql-mode
select @@sql_mode;
二、解决办法
方法1:修改sql_mode。
linux上找到my.cnf文件,window上找到my.ini文件。
修改 sql_mode赋值。
方法2:修改代码,增加条件判断和主动赋值。
因为不知道生产环境的配置,建议还是不要偷懒。
三、一些mysql 严格模式的选项
NO_ZERO_DATE 认为日期为0非法
STRICT_TRANS_TABLES 表示启用严格模式。例如把''传递给int字段非法。
2个方案吧:
1.用数据库的 存储过程 ,相当于数据库的函数,这里面可以加 逻辑判断
这个方法比较少用
2.在客户端分2步访问数据库,第一步登录,根据返回的数据,再决定是否 更新数据库,不是在sql语句中逻辑判断 一般都这么用
你的代码写的很乱。
首先if (jpf3.equals(jpf2)) {
if (jpf1.equals(mima)) {
String str="update 人员信息表 set 密码 = '001' where 人员编号 = '001'; ";
//(如果这句换成: String str="update 人员信息表 set 密码 = 'jpf3' where 人员编号 = 'jtf1'; ";就不会修改成功。 为什么啊? 求高人啊!正确格式是什么呢?
)
Statement statement =con.createStatement();
int s=statement.executeUpdate(str);
JOptionPane.showMessageDialog(null, "修改成功");
这一部分是要写在try{}里面的,finally{}里面要对PreparedStatement进行判断,要关闭。
你的sql语句里面使用的是变量
如果变量是String类型的: String str="update 人员信息表 set 密码 = '"+jpf3+"' where 人员编号 = '"+jtf1+"';
如果是int,long,double之类的:String str="update 人员信息表 set 密码 = "+jpf3+" where 人员编号 = "+jtf1+";