版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基礎(chǔ)知識(shí)簡(jiǎn)介數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫,簡(jiǎn)稱DBMS。用途:科學(xué)地組織和存儲(chǔ)數(shù)據(jù);高效地獲取和維護(hù)數(shù)據(jù)。常見的數(shù)據(jù)庫管理系統(tǒng):
MicrosoftAccessOracleMicrosoftSQLServerVisualFoxPro;沒有DBMS之前有了DBMS之后基礎(chǔ)知識(shí)簡(jiǎn)介SQL語言:“結(jié)構(gòu)化查詢語言”StructuredQueryLanguageSQL語言的由來:最早的是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR開發(fā)的一種查詢語言,它的前身是SQUARE語言。SQL語言的優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)潔,功能強(qiáng)大,簡(jiǎn)單易學(xué)。SQL語言的地位:在關(guān)系型數(shù)據(jù)庫中的地位猶如英語在世界上的地位,它是數(shù)據(jù)庫系統(tǒng)的通用語言。利用SQL語言,用戶可以用幾乎同樣的語句在不同的數(shù)據(jù)庫管理系統(tǒng)上執(zhí)行同樣的操作。SQL已經(jīng)被ANSI(美國國家標(biāo)準(zhǔn)化組織)確定為數(shù)據(jù)庫系統(tǒng)的工業(yè)標(biāo)準(zhǔn)。
基礎(chǔ)知識(shí)簡(jiǎn)介什么是ODBC?開放數(shù)據(jù)庫互連(OpenDatabaseConnectivity)微軟開放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分ODBC有什么作用?建立了一組規(guī)范提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)APIAPI:應(yīng)用程序編程接口ODBC本身提供了對(duì)SQL語言的支持:用戶可以直接將SQL語句送給ODBC?;A(chǔ)知識(shí)簡(jiǎn)介ODBC的最大優(yōu)點(diǎn):能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對(duì)應(yīng)DBMS的ODBC驅(qū)動(dòng)程序完成;不論是FoxPro、Access、MYSQL還是Oracle數(shù)據(jù)庫,均可用ODBCAPI進(jìn)行訪問。基礎(chǔ)知識(shí)簡(jiǎn)介ODBC管理器的使用:首先必須用ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源。數(shù)據(jù)源中包含數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及ODBC驅(qū)動(dòng)程序等信息。然后ODBC管理器根據(jù)上述信息,自動(dòng)建立起ODBC與具體數(shù)據(jù)庫的聯(lián)系。只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建立起與相應(yīng)數(shù)據(jù)庫的連接。JDBC簡(jiǎn)介什么是JDBC?Java數(shù)據(jù)庫連接(JavaDataBaseConnectivity)Sun公司開發(fā)的一種用于執(zhí)行SQL語句的JavaAPI由一組用Java語言編寫的類和接口組成,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問通用性:只需用JDBCAPI編寫一個(gè)程序,就可以向相應(yīng)數(shù)據(jù)庫發(fā)送SQL語句,進(jìn)而訪問多種不同的數(shù)據(jù)庫ODBC與JDBC共同點(diǎn):ODBC:微軟公司開發(fā)的用于操作數(shù)據(jù)庫的方法JDBC:Sun公司開發(fā)的用于操作數(shù)據(jù)庫的方法不同點(diǎn):ODBC支持的數(shù)據(jù)庫類型多JDBC基于Java跨平臺(tái)特性,可移植性好JDBC簡(jiǎn)介JDBC能哪完成3件事?與一個(gè)數(shù)據(jù)庫建立連接。向數(shù)據(jù)庫發(fā)送SQL語句。處理數(shù)據(jù)庫返回的結(jié)果。與數(shù)據(jù)庫建立連接的兩種方式:建立JDBC-ODBC橋接器:加載純Java數(shù)據(jù)庫驅(qū)動(dòng)程序JDBC簡(jiǎn)介1)建立JDBC-ODBC橋接器:由Sun公司本身開發(fā)出來的軟件模塊隨著JDK的更新,它的各種操作的API都是最新的性能不高(通常在教學(xué)中使用)2)加載純Java數(shù)據(jù)庫驅(qū)動(dòng)程序所有驅(qū)動(dòng)程序由各個(gè)數(shù)據(jù)庫生產(chǎn)廠商按照J(rèn)DBC標(biāo)準(zhǔn)提供經(jīng)常不支持最新版本的JDK性能較高(通常在軟件開發(fā)中使用)JDBC簡(jiǎn)介使用JDBC-ODBC橋接器連接數(shù)據(jù)庫的過程:1)創(chuàng)建一個(gè)數(shù)據(jù)庫(Access)2)創(chuàng)建一個(gè)ODBC數(shù)據(jù)源,同數(shù)據(jù)庫建立連接3)載入驅(qū)動(dòng)程序,建立一個(gè)JDBC-ODBC橋接器4)創(chuàng)建鏈接(Connection)對(duì)象,連接到數(shù)據(jù)庫5)創(chuàng)建語句(Statement)對(duì)象6)執(zhí)行SQL語句,得到查詢結(jié)果(ResultSet)7)對(duì)結(jié)果操作后,關(guān)閉連接JDBC-ODBC橋接器連接數(shù)據(jù)庫
1.建立數(shù)據(jù)庫使用Access創(chuàng)建一個(gè)數(shù)據(jù)庫student.mdb
該庫中有一個(gè)表,表的名字是“成績(jī)表”;該表中number、name、birthday字段的屬性是文本;math、english字段的屬性是數(shù)字。關(guān)鍵字是number,見教材圖15.1JDBC-ODBC橋接器連接數(shù)據(jù)庫
2.創(chuàng)建一個(gè)ODBC數(shù)據(jù)源1)打開"數(shù)據(jù)源(ODBC)"管理器:打開控制面板,選擇“性能和維護(hù)”→“管理工具”→“數(shù)據(jù)源(ODBC)”;或雙擊c:\windows\system32下的可執(zhí)行文件“odbcad32”。此時(shí)會(huì)出現(xiàn)ODBC數(shù)據(jù)源管理器的對(duì)話框。JDBC-ODBC橋接器連接數(shù)據(jù)庫
2.創(chuàng)建一個(gè)ODBC數(shù)據(jù)源2)添加數(shù)據(jù)源的驅(qū)動(dòng)程序:在ODBC數(shù)據(jù)源管理器對(duì)話框中選擇“用戶DSN”然后單擊“添加”按鈕,將出現(xiàn)安裝數(shù)據(jù)源的驅(qū)動(dòng)程序?qū)υ捒蛟谶x擇列表中選擇相應(yīng)的驅(qū)動(dòng)程序,在選好之后,單擊“完成”按鈕。JDBC-ODBC橋接器連接數(shù)據(jù)庫
2.創(chuàng)建一個(gè)ODBC數(shù)據(jù)源3)創(chuàng)建數(shù)據(jù)源:完成上步操作后,系統(tǒng)將出現(xiàn)創(chuàng)建數(shù)據(jù)源對(duì)話框起名:為新建的數(shù)據(jù)源起一個(gè)名字;選擇:為新建的數(shù)據(jù)源選擇一個(gè)數(shù)據(jù)庫;高級(jí)設(shè)置:設(shè)置登錄名稱和密碼。JDBC-ODBC橋接器連接數(shù)據(jù)庫
3.建立一個(gè)JDBC-ODBC橋接器Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")Class是包java.lang中的一個(gè)類;Class類通過調(diào)用靜態(tài)方法forName加載sun.jdbc.odbc包中的JdbcOdbcDriver類來建立橋接器;建立橋接器時(shí),可能會(huì)發(fā)生異常,需要捕捉(參見教材P393代碼)JDBC常用類與接口使用包java.sql常用類與接口:
DriverManagerConnectionStatement
PreparedStatement
ResultSetJDBC-ODBC橋接器連接數(shù)據(jù)庫
4.創(chuàng)建一個(gè)連接對(duì)象
Connectioncon=DriverManager.getConnection("URL","login
name","password");首先,使用java.sql包中的Connection類聲明一個(gè)對(duì)象;然后,再使用類DriverManager調(diào)用其靜態(tài)方法getConnection創(chuàng)建這樣一個(gè)對(duì)象;URL:jdbc:odbc:數(shù)據(jù)源名字建立連接時(shí),應(yīng)捕捉SQLException異常;參見教材P393代碼;Statementsql=con.createStatement();首先使用Statement聲明一個(gè)SQL語句對(duì)象;通過剛剛創(chuàng)建的連接數(shù)據(jù)庫的對(duì)象con調(diào)用方法createStatement()創(chuàng)建一個(gè)SQL語句對(duì)象;PreparedStatement
sql;
sql=con.prepareStatement("SQL語句");預(yù)編譯處理后,生成該數(shù)據(jù)庫底層的內(nèi)部命令,并將該命令封裝在PreparedStatement對(duì)象中JDBC-ODBC橋接器連接數(shù)據(jù)庫
5.創(chuàng)建SQL語句對(duì)象
sql.executeUpdate(“SQL語句”);
UPDATEINSERTDELETEsql.executeQuery(“SQL語句”);由SELECT語句使用,將數(shù)據(jù)庫查詢結(jié)果存放在一個(gè)ResultSet類的對(duì)象里。JDBC-ODBC橋接器連接數(shù)據(jù)庫
6.執(zhí)行SQL語句,進(jìn)行查詢ResultSet對(duì)象:實(shí)際上是一個(gè)管式數(shù)據(jù)集,即統(tǒng)一形式的列組織的數(shù)據(jù)行組成;ResultSet對(duì)象一次只能看到一個(gè)數(shù)據(jù)行,使用next()方法走到下一個(gè)數(shù)據(jù)行;ResultSet對(duì)象調(diào)用方法getXxx(),傳遞參數(shù)“位置索引”或列名稱,即可得到對(duì)應(yīng)的字段值。注意:使用該方法時(shí)不可顛倒順序!參見教材394頁表15.1JDBC-ODBC橋接器連接數(shù)據(jù)庫
6.執(zhí)行SQL語句,進(jìn)行查詢JDBC-ODBC橋接器連接數(shù)據(jù)庫
7.關(guān)閉數(shù)據(jù)庫數(shù)據(jù)庫每次使用后都必須關(guān)閉:關(guān)閉數(shù)據(jù)庫的順序與打開數(shù)據(jù)庫的順序相反1)先關(guān)閉結(jié)果集(ResultSet)2)再關(guān)閉操作(Statement)3)最后關(guān)閉連接(Connection)15.3順序查詢
使用結(jié)果集Result的next()方法,可以順序的查詢。一個(gè)結(jié)果集將游標(biāo)最初定位在第一行的前面,第一次調(diào)用next()方法使游標(biāo)移動(dòng)到第一行。next()方法返回一個(gè)boolean型數(shù)據(jù),當(dāng)游標(biāo)移動(dòng)到最后一行之后返回false。
15.4可滾動(dòng)結(jié)果集
為了得到一個(gè)可滾動(dòng)的結(jié)果集,必須使用下述方法先獲得一個(gè)Statement對(duì)象:Statementstmt=con.createStatement(inttype,intconcurrency);然后,根據(jù)參數(shù)的type、concurrency的取值情況,stmt返回相應(yīng)類型的結(jié)果集:ResultSetre=stmt.executeQuery(SQL語句);type的取值決定滾動(dòng)方式:ResultSet.TYPE_FORWORD_ONLY
結(jié)果集的游標(biāo)只能向下滾動(dòng)。ResultSet.TYPE_SCROLL_INSENSITIVE
結(jié)果集的游標(biāo)可以上下移動(dòng),當(dāng)數(shù)據(jù)庫變化時(shí),當(dāng)前結(jié)果集不變。ResultSet.TYPE_SCROLL_SENSITIVE
返回可滾動(dòng)的結(jié)果集,當(dāng)數(shù)據(jù)庫變化時(shí),當(dāng)前結(jié)果集同步改變。Concurrency取值決定是否可以用結(jié)果集更新數(shù)據(jù)庫:ResultSet.CONCUR_READ_ONLY
不能用結(jié)果集更新數(shù)據(jù)庫中的表。ResultSet.CONCUR_UPDATETABLE
能用結(jié)果集更新數(shù)據(jù)庫中的表。滾動(dòng)查詢常用到的ResultSet的方法:參見教材P398previous()first()last()
beforeFirst()
afterlast()
getRow()
absolute(introw)15.5排序查詢
可以在SQL語句中使用ORDERBY子語句,對(duì)記錄排序。例如:按總成績(jī)排序查詢的SQL語句SELECT*FROMstudentORDERBYmath+english升序:ASC(默認(rèn))降序:DESC參見教材P399例題15.415.6模糊查詢
可以用SQL語句操作符LIKE進(jìn)行模式般配:使用“%”代替0個(gè)或多個(gè)字符;用一個(gè)下劃線“_”代替1個(gè)字符;比如,下述語句查詢姓氏是“王”的記錄:rs=sql.executeQuery("SELECT*FROMstudentsWHEREnameLIKE‘王%’");參見教材P400例題15.5課堂實(shí)驗(yàn):編寫登陸窗口類LoginFrame(如下圖所示),用于輸入用戶名和密碼。編寫數(shù)據(jù)庫查詢類DataOperation,該類包含靜態(tài)方法isLogin,用于查詢數(shù)據(jù)庫判斷登陸用戶是否存在。15.7隨機(jī)查詢
用Math類的靜態(tài)方法random()可以產(chǎn)生一個(gè)大于0小于1的隨機(jī)數(shù)。使用下述公式:
inti=(int)(Math.random()*number);
可以產(chǎn)生一個(gè)0到number之間的隨機(jī)數(shù)。根據(jù)這個(gè)隨機(jī)數(shù),將游標(biāo)移動(dòng)到相應(yīng)的行,并輸出該行記錄。參見教材P401例題15.615.8更新、添加、刪除記錄
使用SQL語句更新記錄中字段的值Statement對(duì)象調(diào)用方法:
publicint
executeUpdate(String
sqlStatement);
通過參數(shù)sqlStatement指定的方式實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表中記錄的字段值的更新。SQL更新操作常用命令:
UPDATEINSERTDELETESQL更新操作常用命令:UPDATE:UPDATEScoreTable
SETmath=88WHEREname='錢二'INSERT:INSERTINTOScoreTable
VALUES('2005008','1989-12-02','劉明明',70,95)DELETE:DELETEFROMScoreTable
WHEREnumber='2003004'課堂練習(xí):編寫程序,完成如下數(shù)據(jù)庫操作:將"錢大能"的英文成績(jī)改為66分;插入記錄('2005006','李向陽','1934-12-02',96,91)刪除學(xué)號(hào)為'2003002'的學(xué)生的信息記錄課堂練習(xí):編寫一個(gè)"學(xué)生成績(jī)查詢系統(tǒng)":15.9預(yù)處理語句
當(dāng)向數(shù)據(jù)庫發(fā)送一個(gè)SQL語句后,比如:“Select*Fromchengjibiao”首先,數(shù)據(jù)庫庫中的SQL解釋器負(fù)責(zé)將把SQL語句生成底層的內(nèi)部命令然后,執(zhí)行該命令,完成有關(guān)的數(shù)據(jù)操作。潛在的問題:如果應(yīng)用程序不斷地向數(shù)據(jù)庫提交SQL語句,勢(shì)必會(huì)增加數(shù)據(jù)庫中SQL解釋器的負(fù)擔(dān),影響執(zhí)行的速度。15.9預(yù)處理語句
預(yù)處理:首先,應(yīng)用程序針對(duì)連接的數(shù)據(jù)庫,事先將SQL語句解釋為數(shù)據(jù)庫底層的內(nèi)部命令;然后,直接讓數(shù)據(jù)庫去執(zhí)行這個(gè)命令。優(yōu)點(diǎn):不僅減輕了數(shù)據(jù)庫的負(fù)擔(dān);而且也提高了訪問數(shù)據(jù)庫的速度。對(duì)于JDBC,如果使用Connection和某個(gè)數(shù)據(jù)庫建立了連接對(duì)象con,那么con就可以調(diào)用prepareStatement(String
sql)
方法對(duì)SQL語句進(jìn)行預(yù)編譯處理;預(yù)編譯處理后,會(huì)生成該數(shù)據(jù)庫底層的內(nèi)部命令,并將該命令封裝在PreparedStatement對(duì)象中;那么該對(duì)象調(diào)用下列方法,都可以使得該底層的內(nèi)部命令被數(shù)據(jù)庫執(zhí)行:execute();executeQuery();executeUpdate()15.9預(yù)處理語句
PreparedStatement對(duì)象可調(diào)用的方法:execute():可執(zhí)行SQL任何命令executeQuery():執(zhí)行查詢命令executeUpdate():執(zhí)行更新、插入或刪除命令只要編譯好了PrepareedStatement對(duì)象,那么該對(duì)象可以隨時(shí)的執(zhí)行上述方法,顯然提高了訪問數(shù)據(jù)庫的速度15.9預(yù)處理語句
參見教材P401例題15.6con=DriverManager.getConne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年氰化物中毒解毒藥項(xiàng)目籌資方案
- 《氟斑牙DEAN氏診斷》課件
- 2023年人工種植牙項(xiàng)目融資計(jì)劃書
- 《電機(jī)與拖動(dòng)復(fù)習(xí)》課件
- 養(yǎng)老院老人心理咨詢師表彰制度
- 養(yǎng)老院老人精神關(guān)懷制度
- 《的工作方式》課件
- 《王老吉SWOT分析新》課件
- 2024年物業(yè)管理合同服務(wù)內(nèi)容詳細(xì)描述與標(biāo)的
- 2024年物業(yè)購買協(xié)議3篇
- 營業(yè)線施工安全專項(xiàng)整治檢查表
- 華能煙臺(tái)發(fā)電廠2×9F級(jí)燃?xì)庹羝?lián)合循環(huán)熱電聯(lián)產(chǎn)項(xiàng)目環(huán)評(píng)報(bào)告表
- 采用新工藝、新技術(shù)、新設(shè)備、新材料等的程度(工程技術(shù)標(biāo))
- 江西宏柏新材料股份有限公司功能性氣凝膠生產(chǎn)基地建設(shè)項(xiàng)目環(huán)評(píng)報(bào)告書
- DB33∕T 1230-2020 金屬面板保溫裝飾板外墻外保溫系統(tǒng)應(yīng)用技術(shù)規(guī)程
- 水泥物資供應(yīng)、運(yùn)輸及售后服務(wù)方案
- DB13∕T 5023-2019 有限空間作業(yè)安全規(guī)范
- 日本隧道與地下工程新技術(shù)(PPT142頁)
- Tekla節(jié)點(diǎn)示例已全
- 胸膜間皮瘤的診治新進(jìn)展
- 菌群移植途徑的選擇與建立臨床應(yīng)用中國專家共識(shí)
評(píng)論
0/150
提交評(píng)論