2016-11-23 50 views
2
String query="UPDATE table_name SET tab_attr1= ? WHERE tab_attr2= ?"; 
PreparedStatement preparedStatement=connection.prepareStatement(query); 
preparedStatement.setString(1,"test1"); 
preparedStatement.setString(2,"test2"); 
//case_1 
int count=preparedStatement.executeUpdate(); 

/* 
case_2 
preparedStatement.execute(); 
int count=preparedStatement.getUpdateCount(); 
*/ 

進出口新的領域,作爲一個Java開發工作不使用UpdateCount()和executeUpdate的()的返回samething

在我的測試用例都返回同樣的事情 所以我的問題是,是否有任何區別兩個 如果沒有差異,那麼這兩個函數的需求是什麼。 2例..有什麼區別?

+0

從「Statement」接口Javadoc,這兩個方法看起來很相似:https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html –

+0

無論出於何種原因,我已經看到'executeUpdate()'被更頻繁地使用。 –

回答

2

從文檔:

PreparedStatement.html#executeUpdate()

執行在此PreparedStatement對象,其 必須是一個SQL數據操縱語言(DML)語句的SQL語句,如 INSERT,UPDATE或DELETE ;或者一個不返回任何內容的SQL語句,如DDL語句, 。

返回::(1)對於SQL數據操作語言(DML)語句(2)0 SQL語句的行數表示不返回任何

所以基本上:

  • executeUpdate()用於SQL INSERT,UPDATE,DELETE或DLL語句。
  • ​​可用於任何 SQL語句之後您可以撥打getUpdateCount()

由於您使用的更新並不在你的情況下,無所謂。應該沒有區別。

+0

這意味着getUpdateCount()是專門爲在執行更新查詢()語句正確 –

+0

沒有,但它可能會纔有意義調用getUpdateCount()後更新已發生某種執行語句(插入,刪除,更新等) 。 – Diyarbakir

+0

表示getUpdateCount()將適用於所有3個數據操作語句 –

2

的executeUpdate(字符串SQL):該方法是用於SQL語句哪個更新以某種方式數據庫,返回表示受查詢

執行(字符串SQL)的行數int值:這方法可以用於所有類型的SQL語句。如果您不知道使用哪種SQL語句的方法,那麼此方法可能是最佳選擇。 還有executeQuery(String sql):此方法用於從數據庫中檢索某些數據的SQL語句,此方法用於從數據庫中獲取某些數據的select查詢