2015-09-09 57 views
0

我有query = "select * from user_message where username = '[email protected]';"。有一列'is_read'(當消息發送給用戶,is_read默認爲false,這意味着用戶還沒有閱讀消息),第一次選擇後,我必須將該列更改爲真UPDATE user_message SET is_read=true where username = '[email protected]';這意味着用戶已閱讀消息。所以問題是我可以做一個查詢,並通過批處理執行它,或者我應該做兩個不同的查詢?哪種方法更好?preparedstatement批次插入和更新?

+0

通過每次只設置參數,您可以循環使用單個preparedStatement更新的值。 – Blip

回答

0

您正在編寫一個帶有兩個參數username和is_read的方法。你可以在需要時隨時調用這個方法。

0

我覺得你的更新語句不正確,因爲它沒有通過的消息ID

我猜它是這樣的:

UPDATE user_message 
SET is_read=true 
where username = '[email protected]' 
and user_message_id = 123 

如果你想多封郵件設置爲read你可以這樣做:

UPDATE user_message 
SET is_read=true 
where username = '[email protected]' 
and user_message_id in (123, 234, 456) 

這感覺就像一個設計缺陷給我。爲什麼user_message表有電子郵件?如果用戶更改電子郵件會發生什麼情況?你應該通過給每個用戶一個唯一的(整數)ID作爲外鍵來解耦來自用戶的電子郵件。

0

基於這樣的假設在你的參數Collectionemails,我建議如下:

String sql = "Your statement"; 
PreparedStatement stmt = conection.prepare(sql); 
for(String email : emails){ 
    stmt.setString(1, email); 
    stmt.executeUpdate(); 
    stmt.clearParameters(); 
} 

這個我想會幫助你。