天天看點

PreparedStatement 接口簡介|學習筆記

開發者學堂課程【Java進階程式設計:PreparedStatement 接口簡介】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/20/detail/438

preparedSratement 操作資料庫

為了解決 Statement 接口存在的 SQL 執行問題,是以在 java.sql 包裡面又提供有一個Statement 子接口:

PrearedStatement,,這個接口最大的好處是可以編寫正常的 SQL(資料不再和 SQL 文法混合在一起),同時利用占位符的形式,在 SQL 正常執行完畢後可以進行資料的設定。

觀察 PreparedStatement 接口定義:

Public interface PreparedStatement extends Statement

如果要想擷取 PreparedStatement 接口的執行個體,則依然需要通過 Connection 接口來實作,建立方法:

建立PreparedStatement接口對象:

public PreparedStatement

prepareStatement(String sql) throw SQLException;

由于SQL語句已經在建立 PreparedStatement 接口對象的時候提供了,是以在執行資料庫操作的時候也要更換方法。

資料庫更新:

public int executeUpdate() throw SQLException;

資料庫查詢:

public ResultSet executeQuery() throw SQLException。

PreparedStatement 接口簡介|學習筆記

範例:利用 preparedStatement 解決之前的資料操作問題

package cn . mldn . demo ;

import java . sql . Connection ;

import java .sq1.DriverManager;

import java .sq1.PreparedStatement;

import java .utl1.Date;

public class JDBCDemo {

private statie final String DATABASE _ DRVIER =" oracle . jdbe . driver . OracleDriver ";

private static final String DATABASE _ URL =" jdbc : oracle : thin :@1oca1host:1521:mldn";

private static final String DATAASE _ USER =" scott ”;

private static final String DATABASE _ PASSNORD =" tiger ”;

pub1ie statie void main ( String [] args ) throws Exception {

String title =" MLDN 新聞'老李寫的”;

Int read 99;

double price =99.8;

String content =“這個春天有點冷”;

Datel pubdate = new . Date ();

String sql =" INSERT INTo news ( nid , title , read , price , content , pubdate ) VALUES "+"( news _ seq . nextval ,?,?,?,?)";//使用了"?”作為占位符

Connection conn =null;//每一個 Connection 接口對象摺述的就是一個使用者連接配接

Class . forName ( DATABASE _ DRVIER );//向容器之中加載資料岸驅動程式

conn В DriverManager . getConnection ( DATABASE _ URL , DATABASE _ USER , DATABASE _ PASSWORD);

PreparedStatement pstmt = conn . prepareStatement (sql);//建立教據庫的操作對象

//在執行具體的資料庫操作之前需要為占位符設定内容。按照順序設定

pstmt , setString (1, title );

pstmt . setInt (2, read );

pstmt . setDouble (3, price );

pstmt . setString (4, content );

pstmt . setDate (5, new java .sq1.Date( pubdate . getTime );

int count = pstmt , executeUpdate ();/傳回影響的行數

System , out , println (”更新操作影響的資料行數,"+ count );

conn . close ();//資料庫的連接配接資源有限一定要關閉

}

}

}

在 JDBC 裡面不管使用的是 preparedStatement 設定的日期時間還是使用 ResultSet 擷取的日期時間實際上都是 java.util,Date 的子類,也就是說現在是如下的對應關系。

PreparedStatement 接口簡介|學習筆記