第十二課《Jdbc數(shù)據(jù)庫操作》教學課件_第1頁
第十二課《Jdbc數(shù)據(jù)庫操作》教學課件_第2頁
第十二課《Jdbc數(shù)據(jù)庫操作》教學課件_第3頁
第十二課《Jdbc數(shù)據(jù)庫操作》教學課件_第4頁
第十二課《Jdbc數(shù)據(jù)庫操作》教學課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目標

了解JDBC簡介掌握JDBC的連接步驟掌握Connection對象的應用掌握Statement對象的應用掌握Recordset對象的應用掌握事務機制7/20/20231什么是JDBC

JDBC,全稱為JavaDataBaseConnectivity它是一個面向對象的應用程序接口(API),通過它可訪問各類關系數(shù)據(jù)庫。JDBC也是java核心類庫的一部分。JDBC的最大特點是它獨立于具體的關系數(shù)據(jù)庫。JDBCAPI中定義了一些Java類分別用來表示與數(shù)據(jù)庫的連接(connections),SQL語句(SQLStatements)結果集(resultsets)以及其它的數(shù)據(jù)庫對象,使得Java程序能方便地與數(shù)據(jù)庫交互并處理所得的結果

7/20/20232JDBC簡介

與ODBC相類似,JDBC接口(API)也包括兩個層次:

面向應用的API:JavaAPI,抽象接口,供應用程序開發(fā)人員使用(連接數(shù)據(jù)庫,執(zhí)行SQL語句,獲得結果)

面向數(shù)據(jù)庫的API:JavaDriverAPI,供開發(fā)商開發(fā)數(shù)據(jù)庫驅動程序7/20/20233

數(shù)據(jù)庫訪問技術簡介

客戶機/服務器應用程序數(shù)據(jù)庫編程ODBCJDBC兩個常用的API數(shù)據(jù)庫執(zhí)行SQL語句檢索查詢結果7/20/20234

JDBCJDBC(Java數(shù)據(jù)庫連接)(sun公司提供)Java應用程序編程接口Java應用程序數(shù)據(jù)庫插入修改刪除查詢7/20/20235JDBC主要對象

JDBC是JAVA程序連接數(shù)據(jù)庫的接口主要是三個對象:1Connection2Statement3ResultSet另外PreparedStatement用于執(zhí)行預編譯語句CallableStatement用于調用存儲過程7/20/20236

JDBC驅動程序的類型JDBC驅動程序的類型JDBC-ODBC橋驅動程序及ODBC驅動程序本地API部分Java驅動程序JDBC-Net純Java驅動程序本地協(xié)議純Java驅動程序7/20/20237JDBCdriver的類型共有四種類型的JDBCdriver:類型1JDBC-ODBCbridgedriver

這種類型的driver能使客戶端通過JDBC調用連接到一個使用ODBCdriver的數(shù)據(jù)庫。使用這類driver需要每個客戶端機器都裝上數(shù)據(jù)庫對應的ODBCdriver

類型2部分Java、部分本機驅動程序

這種驅動使用Java實現(xiàn)與數(shù)據(jù)庫廠商專有API的混和形式來提供數(shù)據(jù)訪問。它比前一種方式要快。JDBC驅動將標準的JDBC調用轉變?yōu)閷?shù)據(jù)庫API的本地調用,該類型的驅動程序是本地部分Java技術性能的本機API驅動程序7/20/20238JDBCdriver的類型(續(xù))

類型3中間數(shù)據(jù)訪問服務器這種方式使用一個中間數(shù)據(jù)訪問服務器,通過這種服務器,它可以把Java客戶端連接到多個數(shù)據(jù)庫服務器上,這種方式不需要客戶端的數(shù)據(jù)庫驅動,而是使用網絡-服務器中間層來訪問一個數(shù)據(jù)庫類型4純Java驅動程序這種方式使用廠商專有的網絡協(xié)議把JDBCAPI調用轉換成直接的網絡調用,這種方式的本質是使用套接字(Socket)進行編程。純Java驅動運行在客戶端,并且直接訪問數(shù)據(jù)庫,該類型的驅動程序是本地協(xié)議完全Java技術性能的驅動程序,同時它的使用也比較簡單,客戶端不需要安裝任何中間件或者運行庫7/20/20239

JDBC體系結構2-1Java程序JDBC驅動程序數(shù)據(jù)庫SQL命令結果7/20/202310JDBC體系結構2-2應用層Driver

StatementResultSet

Connection

各接口驅動層7/20/202311JDBCURL

JDBCURL提供了一種標識數(shù)據(jù)庫的方法,可以使相應的驅動程序能識別該數(shù)據(jù)庫并與之建立連接。JDBC的作用是提供某些約定,驅動程序編程員在構造它們的JDBCURL時應該遵循這些約定JDBC

URL

應允許驅動程序編程員將一切所需的信息編入其中,而無須要求用戶去做任何系統(tǒng)管理工作7/20/202312JDBCURL的標準語法JDBC

URL

的標準語法如下所示。它由以下幾個不風組成,各部分間用冒號分隔:

jdbc:<

子協(xié)議

>:<

子名稱

>:<主機名>:<端口號>:<數(shù)據(jù)庫>jdbc

協(xié)議。JDBC

URL

中的協(xié)議總是

jdbc<子協(xié)議>

驅動程序名或數(shù)據(jù)庫連接機制的名稱<子名稱>

一種標識數(shù)據(jù)庫的方法以Oraclethin驅動為例:Stringurl="jdbc:oracle:thin:127.0.0.1:1521:dbname";7/20/202313JDBCURL的標準語法JDBC

URL

的標準語法如下所示。它由以下幾個不風組成,各部分間用冒號分隔:

jdbc:<

子協(xié)議

>:<

子名稱

>:<主機名>:<端口號>:<數(shù)據(jù)庫>jdbc

協(xié)議。JDBC

URL

中的協(xié)議總是

jdbc<子協(xié)議>

驅動程序名或數(shù)據(jù)庫連接機制的名稱<子名稱>

一種標識數(shù)據(jù)庫的方法以Oraclethin驅動為例:Stringurl="jdbc:oracle:thin:127.0.0.1:1521:dbname";7/20/202314使用JDBC存取數(shù)據(jù)庫

1加載JDBCdriver;2在客戶程序與數(shù)據(jù)庫之間建立連接;3通過數(shù)據(jù)庫連接將SQL語句從Java程序傳到數(shù)據(jù)庫;4通過數(shù)據(jù)庫返回的記錄集得到所需的數(shù)據(jù);5如需要,再用修改后的數(shù)據(jù)更新數(shù)據(jù)庫;6操作結束,關閉連接7/20/202315JDBC程序訪問數(shù)據(jù)庫的步驟開始導入java.sql包加載并注冊驅動程序創(chuàng)建一個Connection對象創(chuàng)建一個Statement對象執(zhí)行語句關閉ResultSet對象關閉Statement對象關閉連接結束使用ResultSet對象7/20/2023161加載JDBCdriver

驅動程序一般都由數(shù)據(jù)庫廠商提供//1注冊,加載JDBC驅動

DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());

7/20/2023172與數(shù)據(jù)庫建立連接使用DriverManager類的getConnection()方法可以與指定的數(shù)據(jù)庫建立連接。如:Stringurl="jdbc:oracle:thin:127.0.0.1:1521:stan";Stringusername="stan";Stringpassword="stan";

Connectionconn=null;//2與數(shù)據(jù)庫建立連接conn=DriverManager.getConnection(url,username,password);其中的username和password分別對應所連數(shù)據(jù)庫的用戶名和口令。7/20/2023183.創(chuàng)建一個Statement對象

//3創(chuàng)建Statement對象

Statementstmt=conn.createStatement();建立了Statement對象后,就可以利用該對象,根據(jù)行指定的SQL語句,執(zhí)行對數(shù)據(jù)庫的操作7/20/2023194.執(zhí)行指定的SQL語句一旦建立了Statement對象后,就可以利用該對象的executeQuery()方法讓數(shù)據(jù)庫執(zhí)行指定的SQL語句。如://4執(zhí)行指定的sql語句Stringsql="selectempno,ename,salfromemp";ResultSetrs=stmt.executeQuery(sql);7/20/2023205.獲取結果集中的數(shù)據(jù)

調用ResultSet對象的next()方法得到該集合中新的一行。如果ResultSet集合多于一行,可以用一個循環(huán)將它取出如://5獲取結果集中的數(shù)據(jù)while(rs.next()){intno=rs.getInt("empno");Stringname=rs.getString("ename");System.out.println("EmpNo:"+no+"EmpName:"+name);}其中,ResultSet的getXXX()方法用于獲取該行中指定列的值。7/20/2023216.關閉數(shù)據(jù)庫連接對數(shù)據(jù)庫操作結束后,通常要依次關閉打開的ResultSet,Statement和Connection對象。如:

rs.close();stmt.close();conn.close();要注意的是,前面介紹的許多方法如executeQuery()和executeUpdate()等方法均會產生一個SQLException的異常,所以使用這些語句時要作相應的異常處理7/20/202322

API小結Java.sql.DriverManagergetConnection(Stringurl,Stringuser,Stringpwd)//獲得連接registerDriver(Driverdriver)//注冊驅動Java.sql.ConnectioncreateStatement()//建立語句對象,以執(zhí)行sqlvoidclose()//關閉當前連接Java.sql.StatementexecuteQuery(Stringsql)executeUpdate(Stringsql)booleanexecute(sql)如查返回結果集,則返回true,否則返回false7/20/202323API小結(續(xù))Java.sql.ResultSetbooleannext()//使當前行下移getXxx(intcolumnNumber)//取指定列值getXxx(StringcolumnName)//取指定列名的值close()關閉7/20/202324PreparedStatement接口3-1PreparedStatement接口(預編譯的SQL語句)PreparedStatement用于提高運行時效率執(zhí)行PreparedStatement對象比執(zhí)行Statement對象快Statement接口7/20/202325PreparedStatement表示預編譯的SQL語句的對象。SQL語句被預編譯并且存儲在PreparedStatement對象中。然后可以使用此對象高效地多次執(zhí)行該語句

要多次執(zhí)行一個SQL語句,使用PreparedStatement

SQL語句在創(chuàng)建時提供參數(shù)在執(zhí)行PreparedStatement時,只傳遞參數(shù)值通過不同的參數(shù)值多次調用如://創(chuàng)建Statement對象,預編譯sql語句Stringsql=“updateempsetsal=sal+?whereempno=?”;pstmt=conn.prepareStatement(sql);7/20/202326為預編譯sql賦值

在創(chuàng)建PreparedStatement對象之后,必須為參數(shù)賦值使用setXXX方法如:

//為已經預編譯的sql賦值pstmt.setInt(1,1);//為第一個參數(shù)(?)賦值1pstmt.setInt(2,7369);//為第二個參數(shù)(?)賦值73697/20/202327PreparedStatement與Statement無論多少次地使用同一個SQL命令,PreparedStatement都只對它解析和編譯一次。當使用Statement對象時,每次執(zhí)行一個SQL命令時,都會對它進行解析和編譯使用PreparedStatement對象比使用Statement對象的速度更快。7/20/202328事務將一組語句組合起來,以便形成一個可以在所有語句都運行良好時進行提交的事務,或者在其中的一個語句出現(xiàn)錯誤時,就像所有命令都沒有發(fā)出執(zhí)行那樣。也就是說:所有的語句都成功才算成功,一個語句失敗所有的都失敗,不允許其中一條語句成功,一條語句失敗將各個命令組合成

溫馨提示

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

評論

0/150

提交評論