2011-09-13 17 views
0

改變我有一個包含用戶AddressTable(country,state,city,pincode,phonenumber) 的地址,其中包含價值(USA,NY,Bronx,512345,1123456)如何創建一個普通Java程序僅更新字段在MySQL中

當用戶1場編輯一個新值的表或所有字段,如何創建一個只能更新已編輯值的java程序。

我不想用select讀取前面的值,並將它們重新插入新值未編輯的位置。

像保存編輯的值與原有的比較時,他們給出如下

void editAddress(String country,String state,String city,String pincode,String phonenumber) 
{ 
PreparedStatement ps = con.prepareStatement("UPDATE AddressTable set country=?,set state=?,set city=?,set pincode=? ,set phonenumber=? WHERE user=(?)") ; 
ps.setString(1, country); 
ps.setString(2, state); 
ps.setString(3, city); 
ps.setString(4, pincode); 
ps.setString(5, phonenumber); 
ps.setString(6, user);    
ps.executeUpdate(); 
} 
+0

我不明白的問題。你的代碼看起來是一個很好的起點。 – home

回答

1

您可以在值複製到一個簡單的POJO類,然後如何使用一個更新查詢做到這一點。

或者你可以使用和ORM(對象關係映射器)像Hibernate那樣自動執行它。

+0

是否有任何技術在mysql中只有當要插入的值不爲空時才更新 –

+0

這種邏輯可能會在數據庫客戶端更好地完成。一個徹底的解決方案是將列定義爲不接受空值。在這種情況下,整個更新/插入語句會導致發生錯誤而不是編輯。 –

0

你可以做的是保持各領域的當前和以前值一個bean,然後做一個橫切邏輯(如AspectJ的建議),節省/更新修改的值,只有當它是一個從舊

不同
0

就像matesuz所說的那樣,只需在客戶端設置字段不爲空即可。你的好去!

0
UPDATE AddressTable set country=IFNULL(?,country),state=IFNULL(?,state),city=IFNULL(?,city),pincode=IFNULL(?,pincode) ,phonenumber=IFNULL(?,phonenumber) WHERE user=(?) 

的字段的值不會改變,如果要替換的值爲NULL這個查詢

相關問題