1. 程式人生 > >Statement詳細用法及解釋----java

Statement詳細用法及解釋----java

1、建立 Statement 物件:

        建立了到特定資料庫的連線之後,就可用該連線傳送 SQL 語句。Statement 物件用 Connection 的方法createStatement 建立,如下列程式碼段中所示:

Connection con = DriverManager.getConnection(url, "sunny","");
Statement stmt = con.createStatement();

為了執行 Statement 物件,被髮送到資料庫的 SQL 語句將被作為引數提供給 Statement 的方法:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
2、使用 Statement 物件執行語句:

        Statement 介面提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和execute。使用哪一個方法由 SQL 語句所產生的內容決定。

方法 executeQuery: 

        用於產生單個結果集的語句,例如 SELECT 語句。


方法 executeUpdate :

        用於執行 INSERT、UPDATE 或 DELETE 語句以及 SQLDDL(資料定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE語句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數)。對於CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零。


方法 execute:

        用於執行返回多個結果集、多個更新計數或二者組合的語句。因為多數程式設計師不會需要該高階功能,所以本概述後面將在單獨一節中對其進行介紹。


        執行語句的所有方法都將關閉所呼叫的 Statement 物件的當前開啟結果集(如果存在)。這意味著在重新執行 Statement物件之前,需要完成對當前 ResultSet 物件的處理。

        應注意,繼承了 Statement 介面中所有方法的 PreparedStatement 介面都有自己的executeQuery、executeUpdate 和 execute 方法。Statement 物件本身不包含 SQL語句,因而必須給 Statement.execute 方法提供 SQL 語句作為引數。PreparedStatement 物件並 不將SQL 語句作為引數提供給這些方法,因為它們已經包含預編譯 SQL 語句。CallableStatement 物件繼承這些方法的PreparedStatement 形式。對於這些方法的 PreparedStatement 或 CallableStatement版本,使用查詢引數將丟擲 SQLException。

3、語句完成:


        當連線處於自動提交模式時,其中所執行的語句在完成時將自動提交或還原。語句在已執行且所有結果返回時,即認為已完成。對於返回一個結果集的executeQuery 方法,在檢索完 ResultSet 物件的所有行時該語句完成。對於方法executeUpdate,當它執行時語句即完成。但在少數呼叫方法 execute的情況中,在檢索所有結果集或它生成的更新計數之後語句才完成。

statement-相關概述

Statement 物件用於將 SQL 語句傳送到資料庫中。    實際上有三種 Statement 物件,它們都作為在給定連線上執行 SQL語句的包容器:        Statement、PreparedStatement(它從 Statement 繼承而來)和CallableStatement(它從 PreparedStatement 繼承而來)。    它們都專用於傳送特定型別的 SQL 語句:        Statement 物件用於執行不帶引數的簡單 SQL 語句;        PreparedStatement 物件用於執行帶或不帶 IN引數的預編譯 SQL 語句;        CallableStatement 物件用於執行對資料庫已儲存過程的呼叫。

Statement 介面提供了執行語句和獲取結果的基本方法。

PreparedStatement 介面添加了處理 IN 引數的方法;而CallableStatement 添加了處理 OUT 引數的方法。


有些 DBMS將已儲存過程中的每條語句視為獨立的語句;而另外一些則將整個過程視為一個複合語句。在啟用自動提交時,這種差別就變得非常重要,因為它影響什麼時候呼叫commit 方法。在前一種情況中,每條語句單獨提交;在後一種情況中,所有語句同時提交。

4、關閉 Statement 物件:
          Statement 物件將由 Java 垃圾收集程式自動關閉。而作為一種好的程式設計風格,應在不需要 Statement物件時顯式地關閉它們。這將立即釋放 DBMS 資源,有助於避免潛在的記憶體問題。