




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MySQL及JDBC初步第3章關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)RDBMS:RelationalDatabaseManagementSystems,通過(guò)數(shù)據(jù)、關(guān)系和對(duì)數(shù)據(jù)的約束三者組成的數(shù)據(jù)模型來(lái)存放和管理數(shù)據(jù),以行和列的形式存儲(chǔ)數(shù)據(jù)。MySQL:MySQL是一個(gè)開(kāi)放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQLAB公司。MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。特點(diǎn)是:體積小、速度快、總體擁有成本低,且開(kāi)放源碼。MySQL初步安裝MySQL數(shù)據(jù)庫(kù)啟動(dòng)MySQL數(shù)據(jù)庫(kù)MySQL數(shù)據(jù)庫(kù)的使用MySQL常用命令JDBC概述及基本原理JDBC(JavaDatabaseConnectivity)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI。它由一組用Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成。JDBC為工具/數(shù)據(jù)庫(kù)開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,使他們能夠用純JavaAPI來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC的使用包括注冊(cè)驅(qū)動(dòng)程序獲取數(shù)據(jù)庫(kù)連接發(fā)送SQL語(yǔ)句處理結(jié)果連接工具類(lèi)連接數(shù)據(jù)庫(kù)的代碼在一個(gè)項(xiàng)目中是需要經(jīng)常被使用的,在開(kāi)發(fā)一個(gè)大型項(xiàng)目時(shí),會(huì)有相當(dāng)一部分類(lèi)需要與數(shù)據(jù)庫(kù)進(jìn)行連接,一旦某個(gè)連接參數(shù)發(fā)生變化,代碼更改的工作量將十分巨大,工具類(lèi)的出現(xiàn)可以較好地解決這個(gè)問(wèn)題。JDBC
2.0最新版的JDBC2.0API被劃分為兩部分:JDBC2.0核心APIJDBC2.0標(biāo)準(zhǔn)擴(kuò)展API。java.sql包:JDBC2.0的核心API。javax.sql包:JDBC2.0的標(biāo)準(zhǔn)擴(kuò)展API,其中增加了一些數(shù)據(jù)訪問(wèn)和數(shù)據(jù)源訪問(wèn)的重大功能,其中有一些是主要用來(lái)做企業(yè)計(jì)算的。JDBC2.0核心APIJDBC核心API2.0在以下幾個(gè)方面做了比較大的改進(jìn):修改了ResultSet接口的方法,支持可以滾動(dòng)的記錄集和Java語(yǔ)言來(lái)更新記錄集。新的Statement接口支持批操作(BatchUpdate)。支持最新的SQL3數(shù)據(jù)類(lèi)型,特別是對(duì)BLOB、CLOB等類(lèi)型的數(shù)據(jù)提供了很好的支持。JDBC2.0核心API新的SQL
語(yǔ)句接口(Statement
接口)Statement
接口PreparesStatement
接口(繼承Statement
接口) 以上兩個(gè)接口分別由Connection
接口的createStatement()方法和prepareStatement()方法創(chuàng)建。JDBC2.0核心API創(chuàng)建Statement的方法publicStatementcreateStatement()publicStatementcreateStatement (intresuleSetType,intresultSetConcurrency)resuleSetType:返回ResultSet的類(lèi)型,如是否允許數(shù)據(jù)庫(kù)游標(biāo)前后移動(dòng),是否對(duì)數(shù)據(jù)庫(kù)更新操作敏感等。resultSetConcurrency:返回的ResultSet的協(xié)同模式,如允許更新記錄集的數(shù)據(jù)或者僅僅只讀不能更新等。JDBC2.0核心APIClass.forName(“com.mysql.jdbc.Driver);Connection
conn=DriverManager.getConnection(“……");Statementstmt=con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);上面的代碼創(chuàng)建了一個(gè)SQL
語(yǔ)句接口(Statement)的實(shí)例對(duì)象,該實(shí)例對(duì)象允許它執(zhí)行SQL
語(yǔ)句所返回的記錄集中的數(shù)據(jù)庫(kù)游標(biāo)前后移動(dòng),允許更新記錄集中的數(shù)據(jù)。JDBC2.0核心APIPrepareStatement接口表示預(yù)編譯的SQL語(yǔ)句的對(duì)象。SQL
語(yǔ)句被預(yù)編譯并且存儲(chǔ)在PreparedStatement
對(duì)象中。然后可以使用此對(duì)象高效地多次執(zhí)行該語(yǔ)句。PrepareStatement中的SQL語(yǔ)句往往是不完整的,帶有多個(gè)問(wèn)號(hào)以表示缺省參數(shù),可以相應(yīng)的setter
方法(seInt、setString
等等)指定與輸入?yún)?shù)的已定義SQL類(lèi)型兼容的類(lèi)型。JDBC2.0核心APIClass.forName(“com.mysql.jdbc.Driver);Connectionconn=DriverManager.getConnection(“……");PrepareStatementprepstat=conn.prepareStatement ("insertintotable(name,age)values(?,?)"); prepstat.setString(1,“zhangsan"); prepstat.setInt(2,30); prepstat.executeUpdate();上面的代碼是PrepareStatement使用的例子JDBC2.0核心APIStatement
、PreparedStatement
和CallableStatement
接口都支持?jǐn)?shù)據(jù)庫(kù)批操作。Statement
接口中有如下方法:publicvoidaddBatch(Stringsql);
將SQL語(yǔ)句添加到SQL語(yǔ)句塊中publicvoidclearBatch();
將SQL語(yǔ)句塊中的所有SQL語(yǔ)句全部刪除publicint[]executeBatch();
將SQL語(yǔ)句塊發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器去并執(zhí)行,它返回的結(jié)果是一個(gè)整型數(shù)組。JDBC2.0核心API使用JDBCAPI執(zhí)行數(shù)據(jù)庫(kù)批操作的方法是:1)創(chuàng)建Statement
接口的實(shí)例對(duì)象2)調(diào)用addBatch()方法往SQL語(yǔ)句塊中添加若干個(gè)SQL語(yǔ)句3)使用executeBatch()方法完成數(shù)據(jù)庫(kù)批操作JDBC2.0核心API在PreparedStatement
接口實(shí)現(xiàn)數(shù)據(jù)庫(kù)批操作的方法是1)創(chuàng)建PreparedStatement
接口的實(shí)例對(duì)象2)使用PreparedStatement
接口中定義的setXXX()方法設(shè)定SQL語(yǔ)句參數(shù)的值3)使用addBatch()方法添加批處理語(yǔ)句到語(yǔ)句塊4)使用executeBatch()方法執(zhí)行批處理語(yǔ)句JDBC2.0核心APIDatabaseMetaData接口:用于獲取有關(guān)數(shù)據(jù)庫(kù)的信息,如數(shù)據(jù)庫(kù)中所有的表名、系統(tǒng)函數(shù)、關(guān)鍵字、數(shù)據(jù)庫(kù)產(chǎn)品名和數(shù)據(jù)庫(kù)支持的JDBC驅(qū)動(dòng)程序名等。DatabaseMetaData對(duì)象是通過(guò)Connection接口的getMetaData()方法創(chuàng)建的。ResultSetMetaData接口:用于獲取結(jié)果集的結(jié)構(gòu),如結(jié)果集中列的類(lèi)型和屬性信息。JDBC2.0核心API新的記錄集接口(ResultSet接口)1、新定義了若干個(gè)常數(shù)用于指定游標(biāo)移動(dòng)的方向publicstaticfinalintFETCH_FORWARD;publicstaticfinalintFETCH_REVERSE;publicstaticfinalintFETCH_UNKNOWN;publicstaticfinalintTYPE_FORWARD_ONLY;publicstaticfinalintTYPE_SCROLL_INSENSITIVE;publicstaticfinalintTYPE_SCROLL_SENSITIVE;publicstaticfinalintCONCUR_READ_ONLY;publicstaticfinalintCONCUR_UPDATABLE;JDBC2.0核心APIFETCH_FORWORD:指定處理記錄集中行的順序是由前到后,即從第一行開(kāi)始處理一直到最后一行。FETCH_REVERSE:指定處理記錄集中行的順序是由后到前,即從最后一行開(kāi)始處理一直到第一行。FETCH_UNKNOWN:不指定處理記錄集中行的順序,而由JDBC驅(qū)動(dòng)程序和數(shù)據(jù)庫(kù)系統(tǒng)決定。TYPE_FORWARD_ONLY:指定數(shù)據(jù)庫(kù)游標(biāo)的移動(dòng)方向是向前,不允許向后移動(dòng),即只能使用ResultSet接口的next()方法而不能使用previous()方法,否則會(huì)產(chǎn)生錯(cuò)誤。JDBC2.0核心APITYPE_SCROLL_INSENSITIVE:指定數(shù)據(jù)庫(kù)游標(biāo)可以在記錄集中前后移動(dòng),并且當(dāng)前數(shù)據(jù)庫(kù)用戶獲取的記錄集對(duì)其他用戶的操作不敏感。TYPE_SCROLL_SENSITIVE:指定數(shù)據(jù)庫(kù)游標(biāo)可以在記錄集中前后移動(dòng)并且當(dāng)前數(shù)據(jù)庫(kù)用戶獲取的記錄集對(duì)其他用戶的操作敏感。JDBC2.0核心APICONCUR_READ_ONLY:該常數(shù)的作用是指定當(dāng)前記錄集的協(xié)作方式(concurrencymode)為只讀。一旦使用了這個(gè)常數(shù),那么用戶就不可以更新記錄集中的數(shù)據(jù)。CONCUR_UPDATABLE:該常數(shù)的作用是指定當(dāng)前記錄集的協(xié)作方式(concurrencymode)為可以更新。一旦使用了這個(gè)常數(shù),那么用戶就可以使用updateXXX()等方法更新記錄集中的數(shù)據(jù)。
JDBC2.0核心API2、ResultSet接口提供了一整套的定位方法。publicbooleanabsolute(introw);
該方法的作用是將記錄集中的某一行設(shè)定為當(dāng)前行,亦即將數(shù)據(jù)庫(kù)游標(biāo)移動(dòng)到指定的行。參數(shù)row指定了目標(biāo)行的行號(hào),這是絕對(duì)的行號(hào),由記錄集的第一行開(kāi)始計(jì)算。publicbooleanrelative(introws);
該方法的作用也是將記錄集中的某一行設(shè)定為當(dāng)前行,但是它的參數(shù)rows表示目標(biāo)行相對(duì)于當(dāng)前行的行號(hào)。JDBC2.0核心API例子:當(dāng)前行是第3行現(xiàn)在需要移動(dòng)到第5行去,怎么處理?既可以使用absolute()方法,也可以使用relative()方法。rs.absolute(5);rs.relative(2); 其中rs代表ResultSet接口的實(shí)例對(duì)象JDBC2.0核心API例子:當(dāng)前行是第5行需要移動(dòng)到第3行去代碼如下rs.absolute(3);rs.relative(-2); 其中rs代表ResultSet接口的實(shí)例對(duì)象傳遞給relative()方法的參數(shù)。如果是正數(shù),那么數(shù)據(jù)庫(kù)游標(biāo)向前移動(dòng);如果是負(fù)數(shù),那么數(shù)據(jù)庫(kù)游標(biāo)向后移動(dòng)。JDBC2.0核心APIpublicbooleanfirst();
該方法的作用是將當(dāng)前行定位到數(shù)據(jù)庫(kù)記錄集的第一行。publicbooleanlast();
該方法的作用剛好和first()方法相反,是將當(dāng)前行定位到數(shù)據(jù)庫(kù)記錄集的最后一行。publicbooleanisFirst();
該方法的作用是檢查當(dāng)前行是否記錄集的第一行。如果是,返回true,否則返回false。publicbooleanisLast();
該方法的作用是檢查當(dāng)前行是否記錄集的最后一行。如果是,返回true,否則返回false。JDBC2.0核心APIpublicvoidafterLast();
該方法的作用是將數(shù)據(jù)庫(kù)游標(biāo)移到記錄集的最后,位于記錄集最后一行的后面。如果該記錄集不包含任何的行該方法不產(chǎn)生作用。publicvoidbeforeFirst();
該方法的作用是將數(shù)據(jù)庫(kù)游標(biāo)移到記錄集的最前面,位于記錄集第一行的前面。如果記錄集不包含任何的行,該方法不產(chǎn)生作用。publicbooleanisAfterLast();
該方法檢查數(shù)據(jù)庫(kù)游標(biāo)是否處于記錄集的最后面。如果是,返回true,否則返回false。JDBC2.0核心APIpublicbooleanisBeforeFirst();
該方法檢查數(shù)據(jù)庫(kù)游標(biāo)是否處于記錄集的最前面。如果是,返回true,否則返回false。publicbooleannext();
該方法的作用是將數(shù)據(jù)庫(kù)游標(biāo)向前移動(dòng)一位,使得下一行成為當(dāng)前行。當(dāng)剛剛打開(kāi)記錄集對(duì)象時(shí),數(shù)據(jù)庫(kù)游標(biāo)的位置在記錄集的最前面。publicbooleanprevious();
該方法的作用是將數(shù)據(jù)庫(kù)游標(biāo)向后移動(dòng)一位,使得上一行成為當(dāng)前行。
JDBC2.0核心API3、ResultSet接口添加了對(duì)行操作的支持 使用JDBCAPI2.0不僅可以任意將數(shù)據(jù)庫(kù)游標(biāo)定位到記錄集中的特定行,而且還可以使用ResultSet接口新定義的一套方法更新當(dāng)前行的數(shù)據(jù)。在JDBC1.0中更新記錄集中某行的數(shù)據(jù),必須發(fā)送SQL語(yǔ)句給數(shù)據(jù)庫(kù)以執(zhí)行UPDATE、DELETE、INSERT等數(shù)據(jù)庫(kù)操作。JDBC2.0核心APIpublicbooleanrowDeleted();
如果當(dāng)前記錄集的某行被刪除了,那么記錄集中將會(huì)留出一個(gè)空位。調(diào)用該方法,如果探測(cè)到空位的存在,那么就返回true;如果沒(méi)有探測(cè)到空位的存在,就返回false值。publicbooleanrowInserted();
如果當(dāng)前記錄集中插入了一個(gè)新行,該方法將返回true,否則返回false。publicbooleanrowUpdated();
如果當(dāng)前記錄集的當(dāng)前行的數(shù)據(jù)被更新,該方法返回true,否則返回false。JDBC2.0核心APIpublicvoidinsertRow();
該方法將執(zhí)行插入一個(gè)新行到當(dāng)前記錄集的操作。publicvoidupdateRow();
該方法將更新當(dāng)前記錄集當(dāng)前行的數(shù)據(jù)。publicvoiddeleteRow();
該方法將刪除當(dāng)前記錄集的當(dāng)前行。
JDBC2.0核心APIpublicvoidupdateString(intcolumnIndex,Stringx);
該方法更新當(dāng)前記錄集的當(dāng)前行某列的值,該列的數(shù)據(jù)類(lèi)型是String,該方法的參數(shù)columnIndex指定所要更新的列的列索引,第一列的列索引是1,以此類(lèi)推。publicvoidupdateString(StringcolumnName,Stringx);
該方法同上,其第一個(gè)參數(shù)是columnName代表需要更新的列的列名而不是columnIndex。ResultSet
接口中還定義了很多個(gè)updateXXX()方法都和上面的兩個(gè)方法相類(lèi)似。JDBC2.0核心API向數(shù)據(jù)庫(kù)當(dāng)前記錄集插入新行的操作流程如下:1)調(diào)用moveToInsertRow()方法2)調(diào)用updateXXX()方法指定插入行各列的值3)調(diào)用insertRow()方法往數(shù)據(jù)庫(kù)中插入新的行例:rs.moveToInsertRow(); rs.updateString("name","herry"); rs.updateInt("age",30); rs.insertRow();
JDBC2.0核心API更新數(shù)據(jù)庫(kù)中某個(gè)記錄的值(某行的值)的方法是:1、定位到需要修改的行 2、使用相應(yīng)的updateXXX()方法設(shè)定某行某列的新值,也可以使用cancelRowUpdates()方法進(jìn)行回滾3、使用updateRow()方法完成UPDATE的操作例:rs.first(); rs.updateString("name","Steven"); rs.updateRow();JDBC2.0核心API刪除記錄集中某行(亦即刪除某個(gè)記錄)的方法1、定位到需要修改的行(使用absolute()relative()等方法)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班團(tuán)隊(duì)合作游戲的設(shè)計(jì)與實(shí)施計(jì)劃
- 酒文化社團(tuán)的實(shí)習(xí)與交流計(jì)劃
- 班級(jí)運(yùn)動(dòng)會(huì)的組織與實(shí)施計(jì)劃
- 科技教育與實(shí)踐教學(xué)計(jì)劃
- 品牌年鑒的價(jià)值與編制方法計(jì)劃
- 完善醫(yī)院應(yīng)急處置機(jī)制計(jì)劃
- 職場(chǎng)技能提升月度計(jì)劃
- 零售連鎖店財(cái)務(wù)分析報(bào)告門(mén)店運(yùn)營(yíng)效率評(píng)估
- 名著閱讀《儒林外史》(考題猜想)(原卷版)
- 提高患者滿意度的全面計(jì)劃
- 畢業(yè)設(shè)計(jì)外文文獻(xiàn)-Spring Boot
- 六年級(jí)下冊(cè)《生命.生態(tài).安全》全冊(cè)教案(表格式)
- 采購(gòu)入庫(kù)單模板
- GB 14930.1-2022食品安全國(guó)家標(biāo)準(zhǔn)洗滌劑
- GB/T 15566.6-2007公共信息導(dǎo)向系統(tǒng)設(shè)置原則與要求第6部分:醫(yī)療場(chǎng)所
- 中國(guó)電信教育基地市級(jí)“三通兩平臺(tái)”建設(shè)方案(教育機(jī)構(gòu))
- 火力發(fā)電廠節(jié)能技術(shù)經(jīng)濟(jì)指標(biāo)釋義
- 智能制造知識(shí)課件
- 雙方責(zé)任及工程分工界面
- 2017醫(yī)學(xué)倫理知情同意書(shū)
- 中醫(yī)學(xué)-導(dǎo)論課件
評(píng)論
0/150
提交評(píng)論