有測試框架。mock可以模擬測試而不對數(shù)據(jù)庫操作省去還原數(shù)據(jù)庫的麻煩?;蛘咧苯泳帉慾unit測試操作數(shù)據(jù)庫。但是這樣要在操作后還原數(shù)據(jù)庫。
昌邑網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
息 不報(bào)錯(cuò) 確修改失敗了
java mysql修改信息 不報(bào)錯(cuò) 確修改失敗了_數(shù)據(jù)庫字段異常可能是mysql嚴(yán)格模式導(dǎo)致...
?
IvanhoeBlack
原創(chuàng)
關(guān)注
0點(diǎn)贊·498人閱讀
最近,新手同事Java開發(fā)中遇到數(shù)據(jù)庫報(bào)錯(cuò):
“ java.sql.SQLIntegrityConstraintViolationException: Column 'create_time' cannot be null”
而且開發(fā)環(huán)境上沒有出現(xiàn),生產(chǎn)環(huán)境上才會出現(xiàn)??催^后告訴他是mysql strict mode(嚴(yán)格模式)導(dǎo)致。生產(chǎn)環(huán)境的mysql版本比較高,打開了相關(guān)配置。
5.6.6 版本后默認(rèn)打開嚴(yán)格模式。
這其實(shí)是一個(gè)常見問題,和mysql 打交道時(shí)比較容易遇到。
一、查看sql-mode
select @@sql_mode;
二、解決辦法
方法1:修改sql_mode。
linux上找到my.cnf文件,window上找到my.ini文件。
修改 sql_mode賦值。
方法2:修改代碼,增加條件判斷和主動(dòng)賦值。
因?yàn)椴恢郎a(chǎn)環(huán)境的配置,建議還是不要偷懶。
三、一些mysql 嚴(yán)格模式的選項(xiàng)
NO_ZERO_DATE 認(rèn)為日期為0非法
STRICT_TRANS_TABLES 表示啟用嚴(yán)格模式。例如把''傳遞給int字段非法。
2個(gè)方案吧:
1.用數(shù)據(jù)庫的 存儲過程 ,相當(dāng)于數(shù)據(jù)庫的函數(shù),這里面可以加 邏輯判斷
這個(gè)方法比較少用
2.在客戶端分2步訪問數(shù)據(jù)庫,第一步登錄,根據(jù)返回的數(shù)據(jù),再決定是否 更新數(shù)據(jù)庫,不是在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進(jìn)行判斷,要關(guān)閉。
你的sql語句里面使用的是變量
如果變量是String類型的: String str="update 人員信息表 set 密碼 = '"+jpf3+"' where 人員編號 = '"+jtf1+"';
如果是int,long,double之類的:String str="update 人員信息表 set 密碼 = "+jpf3+" where 人員編號 = "+jtf1+";