語句簡介

所有 SQL 查詢都可以有條件地分為兩組:

  • 檢索數據- 這些包括SELECT語句。
  • 修改數據——包括INSERTUPDATEDELETE語句。

對於第一組,使用我們已經熟悉的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()方法通常在實踐中的使用方式。