JDBC連接數據庫_第1頁
JDBC連接數據庫_第2頁
JDBC連接數據庫_第3頁
JDBC連接數據庫_第4頁
JDBC連接數據庫_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一JDBC工作原理 二通過JDBC對數據庫執行SQL語句 三基于數據源訪問數據庫 四高級開發技巧本章主要內容一JDBC工作原理 二通過JDBC對數據庫執行SQL語句 三基于數據源訪問數據庫 四高級開發技巧JDBC 為多種關系數據庫提供了統一訪問方式,作為特定廠商數據庫訪問API的一種高級抽象,它主要包含一些通用的接口類。真正的數據庫訪問操作實現是由各自數據庫廠商提供的。通常把廠商提供的特定于數據庫的訪問API稱為數據庫JDBC驅動程序。JDBC通過提供一個抽象的數據庫接口,使得程序開發人員在編程時可以不用綁定在特定數據庫廠商的API上,大大增加了應用程序的可移植性。在實際運行過程中程序代碼通過

2、JDBC訪問數據庫時,仍舊需要調用特定于數據庫的訪問API!JDBC訪問數據庫層次結構訪問數據庫層次結構 創建數據庫連接,分為以下幾步:首先注冊數據庫驅動程序,然后根據具體的JDBC URL地址,調用DriverManager對象的getConnection()來獲取一個代表數據庫連接的java.sql.connectuion對象。JDBC URL 的格式如下:jdbc:子協議:數據庫定位器。MySQL數據庫:jdbc:mysql:/機器名/數據庫名Oracle數據庫:jdbc:oracle:thin機器名:端口名:數據庫名 給定具體的JDBC URL,獲取數據庫連接的方法是在DriverMa

3、nager對象上調用getConnection()。這種方法有兩種形式:DriverManager.getConnection(url)DriverManager.getConnection(url,user,password)其中第二種方式需要輸入用戶名和密碼信息進行身份認證。程序71:test.jsp 連接Mysql數據庫成功! 數據庫連接測試數據庫連接測試 一JDBC工作原理 二通過JDBC對數據庫執行SQL語句 三基于數據源訪問數據庫 四高級開發技巧java.sql.Statement 對象代表一條發送到數據庫執行的SQL語句。有三種 Statement 對象:Statement 對象

4、用于執行不帶參數的簡單 SQL 語句;PreparedStatement 對象用于執行帶或不帶參數的預編譯 SQL 語句;CallableStatement 對象用于執行對數據庫存儲過程的調用。 注意:繼承了注意:繼承了Statement 接口中所有方法的接口中所有方法的 PreparedStatement 接口也有自己的接口也有自己的 executeQuery、executeUpdate 和和 execute 方法。方法。Statement 對象本身不對象本身不包含包含 SQL 語句,因而必須給語句,因而必須給 Statement.execute 方法提方法提供供 SQL 語句作為參數。語句

5、作為參數。PreparedStatement 對象并不將對象并不將 SQL 語句作為參數提供給這些方法,因為它們已經包含語句作為參數提供給這些方法,因為它們已經包含預編譯預編譯 SQL 語句。語句。CallableStatement 對象繼承這些方法對象繼承這些方法的的 PreparedStatement 形式。對于這些方法的形式。對于這些方法的 PreparedStatement 或或 CallableStatement 版本,使用查版本,使用查詢參數將拋出詢參數將拋出 SQLException。PreparedStatement 實例包含已編譯的 SQL 語句,這也是將其命名冠以“Prep

6、ared”的原因。包含于 PreparedStatement 對象中的 SQL 語句可具有一個或多個 IN 參數。IN 參數的值在 SQL 語句創建時未被指定。相反的,該語句為每個 IN 參數保留一個問號(“?”)作為占位符。每個問號的值必須在該語句執行之前通過適當的 setXXX() 方法來提供。 由于 PreparedStatement 對象已預編譯過,所以其執行速度要快于 Statement 對象。因此多次執行的 SQL 語句經常創建為 PreparedStatement 對象,以提高效率。一JDBC工作原理 二通過JDBC對數據庫執行SQL語句 三基于數據源訪問數據庫 四高級開發技巧數

7、據源是在JDBC 2.0中引入的一個概念。在JDBC 2.0擴展包中定義了javax.sql.DataSource接口來描述數據源的概念。如果用戶希望建立一個數據庫連接,通過查詢在JNDI(Java Naming and Directory Interface)服務中的數據源,可以從數據源中獲取相應的數據庫連接。這樣程序開發人員就只需要獲取一個邏輯名稱,而不是數據庫登錄的具體細節,這樣代碼的移植能力就更強。屬性名稱屬性數據類型描述databaseNameString數據庫名稱,即數據庫的SIDdataSourceNameString數據源接口實現類的名稱。descriptionString對數

8、據源的描述。networkProtocolString和服務器通訊使用的網絡協議名。passwordString用戶登錄密碼。portNumberInt數據庫服務器使用的端口,缺省值為1521。serverNameString數據庫服務器名稱。userString用戶登錄名。程序75: mysql- service.xml(片段) MySqlDS jdbc:mysql:/localhost:3306/sampleorg.gjt.mm.mysql.Driverroot jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC

9、 Wrapper.tryjavax.naming.InitialContext ctx = new javax.naming.InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup(java:/MySqlDS); conn = ds.getConnection();preparedStmt =conn.prepareStatement(select customerid,address,phone from customer where firstname like ? );/設置參數Strin

10、g parm= request.getParameter(parm);preparedStmt.setString(1, %+parm+%);/執行Sql語句 sqlRst=preparedStmt.executeQuery (); %程序76:test2.jsp(片段)一JDBC工作原理 二通過JDBC對數據庫執行SQL語句 三基于數據源訪問數據庫 四高級開發技巧BLOB字段的處理字段的處理 /執行Sql語句 sqlRst=Stmt.executeQuery ( SQLString); while(sqlRst.next()java.sql.Blob blob=sqlRst.getBlob( data ); byte ab = blob.getBytes(1, (int)blob.length(); response.setContentType(image/gif); response.reset(); op.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論