優化Statement物件

2021-08-25 12:30:02 字數 1579 閱讀 5439

原創 優化statement物件 收藏

statement物件是jdbc程式設計中非常重要的物件,它包含了sql語句的查詢與更新的操作,通過statement物件可以完成對資料庫的查詢和更新操作,可以這樣理解:statement物件是運算元據庫資料的載體。

statement物件的效能,對程式的處理效率起很大的作用,我們可以通過下面幾種途徑來調優statement的效能:

1、選擇正確的statement介面

2、盡可能的做批處理更新

3、採用適當的緩衝資料行技術

4、及時關閉statement物件

下面,**一下如何選擇正確的statement介面。

statement用於將sql語句送到資料庫中。在jdbc技術規範中,共有三中不同型別的statement物件,都可以用來執行sql查詢和更新操作。他們分別是:statement、preparedstatement(繼承自statement)和callablestatement(繼承自 preparedstatement)。它們都用於傳送特定型別的sql語句: statement物件用於不帶引數的簡單sql語句;preparedstatement用於執行帶或不帶in引數的預編譯sql語句;callablestatement用於執行對資料庫已儲存過程的呼叫。

statement介面提供了執行語句和獲取結果的基本方法。preparedstatement介面新增了處理輸入(in)引數的方法,而callablestatement新增了處理輸出(out)引數的方法。

通常來講,preparedstatement比statement效能更好,主要體現在乙個sql語句多次重複執行的情況下,preparedstatement只編譯一次而statement每次編譯一次。但當應用要求處理動態sql語句或有時間限制的命令時,應該盡量使用statement物件。表面上看來,preparedstatement物件比statement物件速度要快。但在實際應用開發中表明,在有時間限制的sql語句中,除非成批的處理sql語句,應當考慮使用statement物件。statement可以使動態的sql命令的建立和執行變得比較簡單。

但是,如果應用中要求提高資料庫的總體效率,採用preparedstatement,因為preparedstatement物件執行sql語句時,命令被資料庫進行解析和編譯,然後放到命令緩衝區,此後,每當執行乙個preparedstatement物件時,它就會被再解析一次,而不是再編譯一次。在大量使用者的系統軟體中,經常會重複執行相同的sql語句,使用preparedstatement物件,系統進行的編譯次數比使用statement的次數少得多,因此,能提高總體的效能。同理,當應用存在成批處理重複的插入或更新操作時,不應該採用statement物件,應該盡量採用 preparedstatement物件。

對statement物件特性與功能的使用,還要依靠jdbc驅動是否支援響應的特性和功能。例如:oracle提供的statement和 callablestatement並不真正的支援批處理,只有preparedstatement讀鄉才真正的支援批處理。可以通過使用 addbatch()和excutebatch()方法選擇標準的jdbc執行批處理操作,或者通過利用preparedstatement物件所提供的 setexcutebatch()方法和標準的excuteupdate()方法。

資料庫Statement物件

今天在程式中看見這樣一段 resultset rs null resultset rs1 null statement st conn.createstatement string sql select a from b string sql1 null rs st.executequery sql...

三種 Statement 物件的比較

1 statement 物件 用於執行不帶引數的簡單 sql 語句 它提供了三種執行 sql語句的方法 executequery 用於產生單個結果集的 sql,如 select語句 executeupdate 用於執行 insert delete update create table drop t...

三種Statement區別

statement 用於普通的sql查詢 callablestatement 用於儲存過程 preparedstatement 用於預編譯的sql語句就是帶引數那種 statement 由方法 createstatement 所建立。statement 物件用於傳送簡單的 sql 語句。prepar...