版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第24講數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)指的是以一定方式儲(chǔ)存在一起、能為多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的增、刪、改、查由統(tǒng)一的軟件進(jìn)行管理和控制。常用的數(shù)據(jù)庫(kù)軟件有Oracle、SQLServer、MySQL、DB2、ACCESS、Sybase等。本講就以MySQL為例講解使用Java語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)。第24講數(shù)據(jù)庫(kù)操作24.1JDBC24.2結(jié)果集及常見(jiàn)方法24.3操作數(shù)據(jù)庫(kù)步驟24.4課后練習(xí)24.1JDBC在Java語(yǔ)言中,JDBC(JavaDataBaseConnection)是應(yīng)用程序與數(shù)據(jù)庫(kù)溝通的橋梁,即Java語(yǔ)言通過(guò)JDBC技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)。JDBC是一種“開放”的方案,它為數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員﹑數(shù)據(jù)庫(kù)前臺(tái)工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語(yǔ)言編寫完整的數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC是Java應(yīng)用與數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行交互的標(biāo)準(zhǔn)API,包括兩個(gè)包:核心API(java.sql)和擴(kuò)展的API(javax.sql)。24.2結(jié)果集及常見(jiàn)方法(1)結(jié)果集有三種類型,它的類型決定了能否對(duì)結(jié)果集中的游標(biāo)進(jìn)行操作,以及并發(fā)的數(shù)據(jù)源的改變能否反映到結(jié)果集中。具體描述如下:類型描述TYPE_FORWARD_ONLY默認(rèn)的結(jié)果集類型,這種類型的結(jié)果集對(duì)象的游標(biāo)只能向前移動(dòng),從第1行的前面到最后一行的后面。TYPE_SCROLL_INSENSITIVE這種類型的結(jié)果集對(duì)象的游標(biāo)可以向前移動(dòng),也可以直接定位到某一行上,但是對(duì)結(jié)果集中對(duì)應(yīng)數(shù)據(jù)的變化是不敏感的。TYPE_SCROLL_SENSITIVE這種類型的結(jié)果集對(duì)象的游標(biāo)可以向前移動(dòng),也可以直接定位到某一行上,并且對(duì)結(jié)果集中對(duì)應(yīng)數(shù)據(jù)的變化是敏感的(如果)。(2)結(jié)果集的并發(fā)性決定了結(jié)果集所支持的更新操作的層次,有兩種并發(fā)性層次:類型描述CONCUR_READ_ONLY默認(rèn)的結(jié)果集并發(fā)類型,這種情況下的結(jié)果集對(duì)象不支持更新操作。CONCUR_UPDATABLE這種情況下的結(jié)果集對(duì)象支持更新操作。
可以通過(guò)調(diào)用DatabaseMetaData的supportsResultSetConcurrency方法來(lái)看驅(qū)動(dòng)是否支持結(jié)果集上的更新操作,該方法定義如下:booleansupportsResultSetConcurrency(inttype,intconcurrency)throwsSQLException。第一個(gè)參數(shù)表示結(jié)果集類型,第二個(gè)參數(shù)表示并發(fā)類型。(3)結(jié)果集的延續(xù)性是指當(dāng)事務(wù)提交時(shí),在當(dāng)前事務(wù)中創(chuàng)建的結(jié)果集是否關(guān)閉。默認(rèn)情況下會(huì)關(guān)閉這個(gè)結(jié)果集對(duì)象。延續(xù)性可以通過(guò)如下兩個(gè)靜態(tài)屬性來(lái)指定:類型描述HOLD_CURSORS_OVER_COMMIT當(dāng)提交事務(wù)時(shí)不關(guān)閉該結(jié)果集對(duì)象。CLOSE_CURSORS_AT_COMMIT提交事務(wù)時(shí)關(guān)閉結(jié)果集對(duì)象,有時(shí)候會(huì)提高性能。(4)結(jié)果集的類型、并發(fā)性和延續(xù)性可以通過(guò)Connection.createStatement、Connection.prepareStatement和Connection.prepareCall等方法指定,同時(shí)Statement、PreparedStatement和CallableStatement接口也提供了相應(yīng)的setter方法和getter方法。如下代碼是創(chuàng)建語(yǔ)句對(duì)象的時(shí)候指定結(jié)果集的類型、并發(fā)性和延續(xù)性。Connectionconn=ds.getConnection(user,passwd);Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY,ResultSet.CLOSE_CURSORS_AT_COMMIT);返回值方法名功能描述booleannext()將游標(biāo)從當(dāng)前位置向前移一行,如果指向某行,返回true,如果指向最后一行的后面,返回falsebooleanprevious()將游標(biāo)從當(dāng)前位置向后移一行,如果指向某行,返回true,如果指向第一行的前面,返回falsebooleanfirst()將游標(biāo)移到此結(jié)果集的第一行。返回值功能名功能描述booleanlast()將游標(biāo)移到些結(jié)果集的最后一行。voidbeforeFirst()將游標(biāo)移動(dòng)到此結(jié)果集的開始處,正好位于第一行之前voidafterLast()將游標(biāo)移動(dòng)到此結(jié)果集的末尾,正好位于最后一行之后booleanrelative(introws)按相對(duì)行數(shù)移動(dòng)游標(biāo)。如果參數(shù)為0,游標(biāo)無(wú)變化。如果參數(shù)是正的,游標(biāo)向前移動(dòng)rows行,如果rows太大,游標(biāo)指向最后1條記錄的后面。如果參數(shù)是負(fù)數(shù),游標(biāo)向后移動(dòng)rows行,如果rows太小,游標(biāo)指向第1條記錄的前面。如果游標(biāo)指向一個(gè)有效行,方法返回true,否則返回falsebooleanabsolute(introw)將游標(biāo)移動(dòng)到參數(shù)所指定的行24.3操作數(shù)據(jù)庫(kù)步驟一般來(lái)說(shuō),Java應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)的步驟為:(1)裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序是把各個(gè)數(shù)據(jù)庫(kù)提供的訪問(wèn)數(shù)據(jù)庫(kù)的API加載到程序中,并將其注冊(cè)到DriverManager中,每一種數(shù)據(jù)庫(kù)提供的數(shù)據(jù)庫(kù)驅(qū)動(dòng)不一樣,下面我們以Mysql為例,來(lái)看一下JDBC驅(qū)動(dòng)加載注冊(cè)的代碼:Class.forName("com.mysql.jdbc.Driver").newInstance();(2)通過(guò)JDBC建立數(shù)據(jù)庫(kù)連接建立數(shù)據(jù)庫(kù)之間的連接是訪問(wèn)數(shù)據(jù)庫(kù)的必要條件,于不同數(shù)據(jù)庫(kù)也是不一樣的,下面我們看一下Mysql數(shù)據(jù)庫(kù)建立數(shù)據(jù)庫(kù)連接,取得Connection對(duì)象的方式:Stringurl="jdbc:mysql://localhost:3306/testDB?user=root&password=root&useUnicode=true&characterEncoding=gb2312";Connectionconn=DriverManager.getConnection(url);(3)訪問(wèn)數(shù)據(jù)庫(kù),執(zhí)行SQL語(yǔ)句數(shù)據(jù)庫(kù)連接建立好之后,接下來(lái)就是一些準(zhǔn)備工作和執(zhí)行sql語(yǔ)句了,準(zhǔn)備工作要做的就是建立Statement對(duì)象PreparedStatement對(duì)象,例如:
//建立Statement對(duì)象
Statementstmt=conn.createStatement();//建立PreparedStatement對(duì)象
Stringsql="select*fromuserwhereuserName=?andpassword=?";PreparedStatementpstmt=Conn.prepareStatement(sql);pstmt.setString(1,"admin");pstmt.setString(2,"liubin");做好準(zhǔn)備工作之后就可以執(zhí)行sql語(yǔ)句了,執(zhí)行sql語(yǔ)句:Stringsql="select*fromusers";ResultSetrs=stmt.executeQuery(sql);//執(zhí)行動(dòng)態(tài)SQL查詢
ResultSetrs=pstmt.executeQuery();//執(zhí)行insertupdatedelete等語(yǔ)句,先定義sqlstmt.executeUpdate(sql);(4)處理結(jié)果集訪問(wèn)結(jié)果記錄集ResultSet對(duì)象。例如:
while(rs.next){out.println("你的第一個(gè)字段內(nèi)容為:"+rs.getString("Name"));out.println("你的第二個(gè)字段內(nèi)容為:"+rs.getString(2));}(5)斷開數(shù)據(jù)庫(kù)連接依次將ResultSet、Statement、PreparedStatement、Co
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來(lái)五年專網(wǎng)無(wú)線通信企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略分析研究報(bào)告
- 二年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)
- 網(wǎng)絡(luò)技術(shù)公司網(wǎng)絡(luò)工程師的招聘題目集
- 人工智能在智能客服中的應(yīng)用與客戶問(wèn)題解決率提升研究畢業(yè)論文答辯匯報(bào)
- 精密儀器防震包裝設(shè)計(jì)與運(yùn)輸過(guò)程中損壞率降低研究畢業(yè)論文答辯
- 幼兒園空氣風(fēng)力車科學(xué)教案
- PowerPoint制作一般流程首柳河教育信教案(2025-2026學(xué)年)
- 中考化學(xué)全程復(fù)習(xí)專項(xiàng)二信息給予開放類試題新人教版教案
- 公開課蘇教初中語(yǔ)文八上都市精靈二教案(2025-2026學(xué)年)
- 屆新高考一輪復(fù)習(xí)城市第講城市空間結(jié)構(gòu)教案(2025-2026學(xué)年)
- 冷庫(kù)安全培訓(xùn)演練課件
- 農(nóng)業(yè)產(chǎn)業(yè)新質(zhì)生產(chǎn)力
- 研磨鉆石的專業(yè)知識(shí)培訓(xùn)課件
- 2025年傳達(dá)學(xué)習(xí)醫(yī)療機(jī)構(gòu)重大事故隱患判定清單會(huì)議記錄
- 機(jī)動(dòng)車檢驗(yàn)機(jī)構(gòu)管理年度評(píng)審報(bào)告
- 百度無(wú)人機(jī)基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025至2030中國(guó)家用燃?xì)鈭?bào)警器市場(chǎng)現(xiàn)狀發(fā)展分析及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 金融行業(yè)行政管理社會(huì)調(diào)查報(bào)告范文
- 2025年中國(guó)高油玉米數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 水印江南美食街招商方案
- 二零二五年度綠色生態(tài)住宅小區(qū)建設(shè)工程合同協(xié)議
評(píng)論
0/150
提交評(píng)論