語句簡介
所有 SQL 查詢都可以有條件地分為兩組:
- 檢索數據- 這些包括SELECT語句。
- 修改數據——包括INSERT、UPDATE和DELETE語句。
對於第一組,使用我們已經熟悉的Statement接口方法- executeQuery()。原則上,這種方法已經足夠入門了。它涵蓋了您在實際工作中需要使用的很大一部分查詢。
我們稍後會討論更多選項,但現在,我建議您記住——如果您只想從表中獲取數據,那麼在絕大多數情況下 executeQuery ( )方法將是正確的選擇。
對於第二組請求,您需要使用 Statement 接口的另一個方法 - executeUpdate()。與返回 ResultSet的 executeQuery()方法不同,此方法返回一個整數,告訴您在執行查詢時表中有多少行被更改。
例如,您可以使用DELETE FROM employee 語句刪除所有行(因此要非常小心)。在這種情況下,executeUpdate()方法將返回已刪除的行數。在某些情況下,了解更改的行數對於構建處理數據的算法很有用。
原則上,我們可以完成這個問題——我們已經看到了主要的東西。對於數據獲取 - executeQuery()。更改數據 - executeUpdate()。
使用executeQuery()方法獲取用戶表中的用戶數:
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
執行更新()
當您的查詢更改表中的某些內容時,將使用executeUpdate()方法。它可以是任何東西:
- 更新語句
- 插入語句
- 刪除語句
- CALL PROCEDURE語句
此方法返回更改(或刪除)的行數。
讓我們寫一個請求,將我們所有員工的工資增加 1000 盧布。
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
在我運行這段代碼後,它在我的表上返回了數字 6。我的表有 6 行。所以所有的線都被改變了。
執行()
有時,當您不確切知道必須執行什麼請求(選擇或數據更改)時,您的生活中可能會出現這種情況。在這種情況下,JDBC 的創建者為其添加了另一個通用方法 - execute()。
此方法可用於代替executeQuery()和executeUpdate()方法。您還記得這些方法有何不同嗎?正確的。結果類型。因此,JDBC 的創造者想出了這樣的解決方案。
execute()方法返回布爾值。如果此值為true,則表示正在進行數據提取請求,您需要調用getResultSet()方法來獲取數據。例子:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
如果此值為false,則正在進行數據更改請求,您需要調用getUpdateCount()方法來獲取更改的行數。例子:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
讓我們編寫一個顯示查詢結果的方法:
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Your request lines below: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Number of name strings: ” + count);
}
}
這就是execute()方法通常在實踐中的使用方式。
GO TO FULL VERSION