![數(shù)據(jù)庫應(yīng)用開發(fā)_第1頁](http://file4.renrendoc.com/view/8c8fc07976dae0034afe62bbb09c7289/8c8fc07976dae0034afe62bbb09c72891.gif)
![數(shù)據(jù)庫應(yīng)用開發(fā)_第2頁](http://file4.renrendoc.com/view/8c8fc07976dae0034afe62bbb09c7289/8c8fc07976dae0034afe62bbb09c72892.gif)
![數(shù)據(jù)庫應(yīng)用開發(fā)_第3頁](http://file4.renrendoc.com/view/8c8fc07976dae0034afe62bbb09c7289/8c8fc07976dae0034afe62bbb09c72893.gif)
![數(shù)據(jù)庫應(yīng)用開發(fā)_第4頁](http://file4.renrendoc.com/view/8c8fc07976dae0034afe62bbb09c7289/8c8fc07976dae0034afe62bbb09c72894.gif)
![數(shù)據(jù)庫應(yīng)用開發(fā)_第5頁](http://file4.renrendoc.com/view/8c8fc07976dae0034afe62bbb09c7289/8c8fc07976dae0034afe62bbb09c72895.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本講大綱:1、JDBC簡介3、連接數(shù)據(jù)庫2、JDBCAPI4、JDBC操作數(shù)據(jù)庫數(shù)據(jù)庫應(yīng)用開發(fā)JDBC簡介
JDBC是Java程序與數(shù)據(jù)庫系統(tǒng)通信的標(biāo)準(zhǔn)API,它定義在JDK的API中,通過JDBC技術(shù)Java程序可以非常方便的與各種數(shù)據(jù)庫交互,JDBC在Java程序與數(shù)據(jù)庫系統(tǒng)之間建立了一座橋梁。JDBC技術(shù)介紹JDBC驅(qū)動程序JDBC是Java操作數(shù)據(jù)庫的規(guī)范,由一組用Java語言編寫的類和接口組成,它對數(shù)據(jù)庫的操作提供基本方法,但對于數(shù)據(jù)庫的細(xì)節(jié)操作由數(shù)據(jù)庫廠商進(jìn)行實現(xiàn),使用JDBC操作數(shù)據(jù)庫,需要數(shù)據(jù)庫廠商提供數(shù)據(jù)庫的驅(qū)動程序,關(guān)于Java程序與數(shù)據(jù)庫相交互的示意圖如下圖所示。JDBC技術(shù)介紹JDBC驅(qū)動程序是用于解決應(yīng)用程序與數(shù)據(jù)庫通信問題的,它基本上分為JDBC-ODBCBridge、JDBC-NativeAPIBridge、JDBC-middleware和PureJDBCDriver4種類型,下面分別進(jìn)行介紹。 1.JDBC-ODBCBridge 2.JDBC-NativeAPIBridge 3.JDBC-middleware 4.PureJDBCDriverJDBC驅(qū)動程序
JDBC是Java程序操作數(shù)據(jù)庫的標(biāo)準(zhǔn),它由一組用Java語言編寫的類和接口組成,Java通過JDBC可以對多種關(guān)系數(shù)據(jù)庫進(jìn)行統(tǒng)一訪問,所以,學(xué)習(xí)JDBC需要掌握J(rèn)DBC中的類和接口,也就是JDBCAPI。Driver接口Connection接口DriverManager類Statement接口PreparedStatement接口CallableStatement接口ResultSet接口JDBCAPI每種數(shù)據(jù)庫的驅(qū)動程序都應(yīng)該提供一個實現(xiàn)java.sql.Driver接口的類,簡稱Driver類,在加載Driver類時,應(yīng)該創(chuàng)建自己的實例并向java.sql.DriverManager類注冊該實例。Driver接口Connection接口方法名稱功能描述voidclose()throwsSQLException立即釋放此
Connection對象的數(shù)據(jù)庫連接占用的
JDBC資源,在操作數(shù)據(jù)庫后,應(yīng)立即調(diào)用此方法voidcommit()throwsSQLException提交事務(wù),并釋放此
Connection對象當(dāng)前持有的所有數(shù)據(jù)庫鎖。當(dāng)事務(wù)被設(shè)置為手動提交模式時,需要調(diào)用此方法提交事務(wù)StatementcreateStatement()throwsSQLException創(chuàng)建一個
Statement對象來將
SQL語句發(fā)送到數(shù)據(jù)庫,此方法返回Statement對象booleangetAutoCommit()throwsSQLException用于判斷Connection對象是否被設(shè)置為自動提交模式,此方法返回boolean值DatabaseMetaDatagetMetaData()throwsSQLException獲取此
Connection對象所連接的數(shù)據(jù)庫的元數(shù)據(jù)DatabaseMetaData對象,元數(shù)據(jù)包括關(guān)于數(shù)據(jù)庫的表、受支持的
SQL語法、存儲過程、此連接功能等信息intgetTransactionIsolation()throwsSQLException獲取此
Connection對象的當(dāng)前事務(wù)隔離級別booleanisClosed()throwsSQLException判斷此Connection對象是否與數(shù)據(jù)庫斷開連接,此方法返回布爾值。注意如果Connection對象與數(shù)據(jù)庫斷開連接,則不能通過再通此Connection對象操作數(shù)據(jù)庫booleanisReadOnly()throwsSQLException判斷此Connection對象是否為只讀模式,此方法返回boolean值PreparedStatementprepareStatement(Stringsql)throwsSQLException將參數(shù)化的
SQL語句預(yù)編譯并存儲在
PreparedStatement對象中,并返回所創(chuàng)建的這個
PreparedStatement對象voidreleaseSavepoint(Savepointsavepoint)throwsSQLException從當(dāng)前事務(wù)中移除指定的
Savepoint和后續(xù)
Savepoint對象voidrollback()throwsSQLException回滾事務(wù),并釋放此
Connection對象當(dāng)前持有的所有數(shù)據(jù)庫鎖。注意此方法需要應(yīng)用于Connection對象的手動提交模式中voidrollback(Savepointsavepoint)throwsSQLException回滾事務(wù),針對Savepoint對象之后的更改voidsetAutoCommit(booleanautoCommit)throwsSQLException設(shè)置Connection對象的提交模式,如果參數(shù)autoCommit的值設(shè)置為true,Connection對象則為自動提交模式,如果參數(shù)autoCommit的值設(shè)置為false,Connection對象則為手動提交模式voidsetReadOnly(booleanreadOnly)throwsSQLException將Connection對象的連接模式設(shè)置為只讀,此方法用于對數(shù)據(jù)庫的優(yōu)化SavepointsetSavepoint()throwsSQLException在當(dāng)前事務(wù)中創(chuàng)建一個未命名的保留點,并返回這個保留點對象SavepointsetSavepoint(Stringname)throwsSQLException在當(dāng)前事務(wù)中創(chuàng)建一個指定名稱的保留點,并返回這個保留點對象DriverManager類方法聲明說明publicstaticvoidderegisterDriver(Driverdriver)throwsSQLException從DriverManager的管理列表中刪除一個驅(qū)動程序。參數(shù)driver為要刪除的驅(qū)動對象publicstaticConnectiongetConnection(Stringurl)throwsSQLException根據(jù)指定數(shù)據(jù)庫連接URL,建立與數(shù)據(jù)庫連接Connection。參數(shù)url為數(shù)據(jù)庫連接URLpublicstaticConnectiongetConnection(Stringurl,Propertiesinfo)throwsSQLException根據(jù)指定數(shù)據(jù)庫連接URL,及數(shù)據(jù)庫連接屬性信息建立數(shù)據(jù)庫連接Connection。參數(shù)url為數(shù)據(jù)庫連接URL,參數(shù)inof為數(shù)據(jù)庫連接屬性publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException根據(jù)指定數(shù)據(jù)庫連接URL、用戶名及密碼建立數(shù)據(jù)庫連接Connection。參數(shù)url為數(shù)據(jù)庫連接URL,參數(shù)user為連接數(shù)據(jù)庫的用戶名,參數(shù)password連接數(shù)據(jù)庫的密碼publicstaticEnumeration<Driver>getDrivers()獲取當(dāng)前DriverManager中已加載的所有驅(qū)動程序,它的返回值為EnumerationpublicstaticvoidregisterDriver(Driverdriver)throwsSQLException向DriverManager注冊一個驅(qū)動對象,參數(shù)driver為要注冊的驅(qū)動Statement接口方法聲明說明voidaddBatch(Stringsql)throwsSQLException將SQL語句添加到此Statement對象的當(dāng)前命令列表中,此方法用于SQL命令的批處理voidclearBatch()throwsSQLException清空Statement對象中的命令列表voidclose()throwsSQLException立即釋放此Statement對象的數(shù)據(jù)庫和
JDBC資源,而不是等待該對象自動關(guān)閉時發(fā)生此操作booleanexecute(Stringsql)throwsSQLException執(zhí)行指定的SQL語句。如果sql語句返回結(jié)果,此方法返回true,否則返回falseint[]executeBatch()throwsSQLException執(zhí)行Batch中的所有SQL語句,如果全部執(zhí)行成功,則返回由更新計數(shù)組成的數(shù)組,數(shù)組元素的排序與SQL語句的添加順序?qū)?yīng)。數(shù)組元素有以下幾種情況:①大于或等于零的數(shù):說明SQL語句執(zhí)行成功,為影響數(shù)據(jù)庫中行數(shù)的更新計數(shù);②-2:說明SQL語句執(zhí)行成功,但未得到受影響的行數(shù)③-3:說明SQL語句執(zhí)行失敗,僅當(dāng)執(zhí)行失敗后繼續(xù)執(zhí)行后面的SQL語句時出現(xiàn)。如果驅(qū)動程序不支持批量、或者未能成功執(zhí)行Batch中的SQL語句之一,將拋出異常ResultSetexecuteQuery(Stringsql)throwsSQLException執(zhí)行查詢類型(select)的SQL語句,此方法返回查詢所獲取的結(jié)果集ResultSet對象executeUpdateintexecuteUpdate(Stringsql)throwsSQLException執(zhí)行SQL語句中DML類型(insert、update、delete)的SQL語句,返回更新所影響的行數(shù)ConnectiongetConnection()throwsSQLException獲取生成此Statement對象的Connection對象booleanisClosed()throwsSQLException判斷Statement對象是否已被關(guān)閉,如果Statement對象被關(guān)閉,則不能再調(diào)用此Statement對象執(zhí)行SQL語句,此方法返回布爾值PreparedStatement接口方法聲明說明voidsetBinaryStream(intparameterIndex,InputStreamx)throwsSQLException將輸入流x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetBoolean(intparameterIndex,booleanx)throwsSQLException將布爾值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetByte(intparameterIndex,bytex)hrowsSQLException將byte值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetDate(intparameterIndex,Datex)hrowsSQLException將java.sql.Date值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetDouble(intparameterIndex,doublex)hrowsSQLException將double值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetFloat(intparameterIndex,floatx)hrowsSQLException將float值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetInt(intparameterIndex,intx)throwsSQLException將int值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetInt(intparameterIndex,longx)throwsSQLException將long值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetObject(intparameterIndex,Objectx)throwsSQLException將Object對象x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetShort(intparameterIndex,shortx)throwsSQLException將short值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetString(intparameterIndex,Stringx)throwsSQLException將String值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引voidsetTimestamp(intparameterIndex,Timestampx)throwsSQLException將java.sql.Timestamp值x作為SQL語句中的參數(shù)值,parameterIndex為參數(shù)位置的索引
java.sql.CallableStatement接口繼承于PreparedStatement接口,是PreparedStatement接口的擴(kuò)展,用來執(zhí)行SQL的存儲過程。CallableStatement接口ResultSet接口方法聲明說明booleanabsolute(introw)throwsSQLException將光標(biāo)移動到此ResultSet對象的給定行編號,參數(shù)row為行編號voidafterLast()throwsSQLException將光標(biāo)移動到此ResultSet對象的最后一行之后。如果結(jié)果集中不包含任何行,則此方法無效voidbeforeFirst()throwsSQLException立即釋放此ResultSet對象的數(shù)據(jù)庫和
JDBC資源voiddeleteRow()throwsSQLException從此ResultSet對象和底層數(shù)據(jù)庫中刪除當(dāng)前行booleanfirst()throwsSQLException將光標(biāo)移動到此ResultSet對象的第一行InputStreamgetBinaryStream(StringcolumnLabel)throwsSQLException以byte流的方式獲取ResultSet對象當(dāng)前行中指定列的值,參數(shù)columnLabel為列名稱DategetDate(StringcolumnLabel)throwsSQLException以java.sql.Date的方式獲取ResultSet對象當(dāng)前行中指定列的值,參數(shù)columnLabel為列名稱doublegetDouble(StringcolumnLabel)throwsSQLException以double的方式獲取ResultSet對象當(dāng)前行中指定列的值,參數(shù)columnLabel為列名稱floatgetFloat(StringcolumnLabel)throwsSQLException以float的方式獲取ResultSet對象當(dāng)前行中指定列的值,參數(shù)columnLabel為列名稱intgetInt(StringcolumnLabel)throwsSQLException以int的方式獲取ResultSet對象當(dāng)前行中指定列的值,參數(shù)columnLabel為列名稱StringgetString(StringcolumnLabel)throwsSQLException以String的方式獲取ResultSet對象當(dāng)前行中指定列的值,參數(shù)columnLabel為列名稱booleanisClosed()throwsSQLException判斷當(dāng)前ResultSet對象是否已關(guān)閉booleanlast()throwsSQLException將光標(biāo)移動到此ResultSet對象的最后一行booleannext()throwsSQLException將光標(biāo)位置向后移動一行,如移動的新行有效返回true,否則返回falsebooleanprevious()throwsSQLException將光標(biāo)位置向前移動一行,如移動的新行有效返回true,否則返回false在對數(shù)據(jù)庫進(jìn)行操作時,首先需要連接數(shù)據(jù)庫,在JSP中連接數(shù)據(jù)庫大致可以分為加載JDBC驅(qū)動程序、創(chuàng)建Connection對象的實例、執(zhí)行SQL語句、獲得查詢結(jié)果和關(guān)閉連接等5個步驟,下面分別進(jìn)行介紹。加載JDBC驅(qū)動程序創(chuàng)建數(shù)據(jù)庫連接執(zhí)行SQL語句獲得查詢結(jié)果關(guān)閉連接連接數(shù)據(jù)庫在連接數(shù)據(jù)庫之前,首先要加載要連接數(shù)據(jù)庫的驅(qū)動到JVM(Java虛擬機(jī)),通過java.lang.Class類的靜態(tài)方法forName(StringclassName)實現(xiàn),例如,加載MySQL驅(qū)動程序的代碼如下:
try{ Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundExceptione){ System.out.println("加載數(shù)據(jù)庫驅(qū)動時拋出異常,內(nèi)容如下:"); e.printStackTrace(); }加載JDBC驅(qū)動程序通過DriverManager類的靜態(tài)方法getConnection(Stringurl,Stringuser,Stringpassword)可以建立數(shù)據(jù)庫連接,三個入口參數(shù)依次為要連接數(shù)據(jù)庫的路徑、用戶名和密碼,該方法的返回值類型為java.sql.Connection,典型代碼如下:Connectionconn=DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=db_database09","root","root");創(chuàng)建數(shù)據(jù)庫連接通過Connection實例并不能執(zhí)行SQL語句,還需要通過Connection實例創(chuàng)建Statement實例,Statement實例又分為以下3種類型。Statement實例:該類型的實例只能用來執(zhí)行靜態(tài)的SQL語句;PreparedStatement實例:該類型的實例增加了執(zhí)行動態(tài)SQL語句的功能;CallableStatement對象:該類型的實例增加了執(zhí)行數(shù)據(jù)庫存儲過程的功能。執(zhí)行SQL語句在開發(fā)Web應(yīng)用程序時,經(jīng)常需要對數(shù)據(jù)庫進(jìn)行操作,最常用的數(shù)據(jù)庫操作技術(shù),包括向數(shù)據(jù)庫查詢、添加、修改或刪除數(shù)據(jù)庫中的數(shù)據(jù),這些操作即可以通過靜態(tài)的SQL語句實現(xiàn),也可以通過動態(tài)的SQL語句實現(xiàn),還可以通過存儲過程實現(xiàn),具體采用的實現(xiàn)方式要根據(jù)實際情況而定。添加數(shù)據(jù)查詢數(shù)據(jù)修改數(shù)據(jù)刪除數(shù)據(jù)批處理調(diào)用存儲過程JDBC操作數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)添加操作使用的SQL語句為INSERT語句,其語法格式如下:Insert[INTO]table_name[(column_list)]values(data_values)添加數(shù)據(jù)參數(shù)描述[INTO]可選項,無特殊含義,可以將它用在INSERT和目標(biāo)表之前table_name要添加記錄的數(shù)據(jù)表名稱column_list是表中的字段列表,表示向表中哪些字段插入數(shù)據(jù)。如果是多個字段,字段之間用逗號分隔。不指定column_list,默認(rèn)向數(shù)據(jù)表中所有字段插入數(shù)據(jù)data_values要添加的數(shù)據(jù)列表,各個數(shù)據(jù)之間使用逗號分隔。數(shù)據(jù)列表中的個數(shù)、數(shù)據(jù)類型必須和字段列表中的字段個數(shù)、數(shù)據(jù)類型相一致values引入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代物流配送體系的智能化升級路徑
- 2024年學(xué)年八年級語文上冊 第一單元 愛在人間 第3課《蘆花蕩》說課稿 滬教版五四制
- 2024年四年級英語下冊 Unit 5 What will you do this weekend Lesson 25說課稿 人教精通版(三起)
- Unit 1 Greetings(說課稿)-2024-2025學(xué)年滬教版(五四制)(2024)英語一年級上冊
- 2023二年級數(shù)學(xué)下冊 7 萬以內(nèi)數(shù)的認(rèn)識第2課時 1000以內(nèi)數(shù)的認(rèn)識(2)說課稿 新人教版
- Unit 3 Food Let's Spell(說課稿)-2024-2025學(xué)年人教新起點版英語三年級上冊
- 2024-2025學(xué)年高一地理《宇宙中的地球》說課稿
- 2023六年級數(shù)學(xué)上冊 八 探索樂園單元概述和課時安排說課稿 冀教版
- 2024-2025學(xué)年高中歷史 專題4 雅爾塔體制下的冷戰(zhàn)與和平 3 人類對和平的追求說課稿(含解析)人民版選修3
- Unit 2 Exploring English Developing ideas 說課稿-2024-2025學(xué)年高一上學(xué)期英語外研版(2019)必修第一冊
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預(yù)測報告(智研咨詢)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學(xué)設(shè)計2022課標(biāo)
- 甘肅省蘭州市蘭煉一中2025屆數(shù)學(xué)高一上期末統(tǒng)考試題含解析
- 聯(lián)合體三方協(xié)議合同模板
- 2024年3季度青島房地產(chǎn)市場季度簡報
- 蘇東坡詞十首
- 山東省臨沂市2024年中考物理真題
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 電力系統(tǒng)分析(郝亮亮)
- 改善護(hù)理服務(wù)行動計劃方案
- 建筑材料包銷協(xié)議書
評論
0/150
提交評論