版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要上一講回顧nJava與與Internetn使用使用InetAddress編程編程n使用使用URL編程編程nSocketn數(shù)據(jù)報(bào)通信編程數(shù)據(jù)報(bào)通信編程2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要學(xué)習(xí)要點(diǎn)學(xué)習(xí)要點(diǎn)nJDBC與數(shù)據(jù)庫(kù)概述與數(shù)據(jù)庫(kù)概述 n訪問(wèn)數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù)庫(kù)n數(shù)據(jù)庫(kù)查詢數(shù)據(jù)庫(kù)查詢n更新、添加、刪除記錄更新、添加、刪除記錄nJDBC事務(wù)支持事務(wù)支持2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.1 JDBC與數(shù)據(jù)庫(kù)概述 n數(shù)據(jù)庫(kù)編程數(shù)據(jù)庫(kù)編程 n種類(lèi)nSQL語(yǔ)言nJDBC框架結(jié)構(gòu)框架結(jié)構(gòu) nJDBC-ODBC橋接器 n配置ODBC數(shù)
2、據(jù)源nJDBC驅(qū)動(dòng)程序2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.1 JDBC與數(shù)據(jù)庫(kù)概述 nJDBC典型應(yīng)用模型典型應(yīng)用模型 n兩層模型, 三層模型2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要nJDBC體系結(jié)構(gòu):體系結(jié)構(gòu):n常用于Java程序訪問(wèn)數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)分為4種2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.1 JDBC與數(shù)據(jù)庫(kù)概述 nJDBC中的主要類(lèi)中的主要類(lèi)(包包java.sql) n驅(qū)動(dòng)程序相關(guān)nDriver,DriverManager n連接數(shù)據(jù)庫(kù)nConnectionn執(zhí)行SQL語(yǔ)句 n Statement,PreparedStatement,CallableStatemen
3、t 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.2 數(shù)據(jù)庫(kù)訪問(wèn) 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要nJDBC中的主要類(lèi)中的主要類(lèi)(包包java.sql)n結(jié)果集 nResultSet n數(shù)據(jù)庫(kù)操作錯(cuò)誤nSQLException,SQLWarningn數(shù)據(jù)庫(kù)及結(jié)果集 n DatabaseMetaData,ResultSetMetaData 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要nJDBC中的主要類(lèi)中的主要類(lèi)(包包java.sql)n時(shí)間日期 nDate,Time,Timestamp n其它 nTypes,DataTruncation 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.3 J
4、DBC編程2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.3 JDBC編程n1、連接數(shù)據(jù)庫(kù)(JDBC- ODBC) nJDBC URLn語(yǔ)法:jdbc:n如:jdbc:odbc:studentdb , jdbc:dbpro:stunjdbc:odbc/ site :5000/stun建立連接nClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);nString url=“jdbc:odbc:studentdb”;nConnection con=DriverManager.getConnection(url,”user”,”pass”);2022-3-15數(shù)據(jù)
5、庫(kù)應(yīng)用程序設(shè)計(jì)概要2、連接MS SQLSERVER 2000nJDBC驅(qū)動(dòng)程序。在安裝目錄的驅(qū)動(dòng)程序。在安裝目錄的lib子目錄中子目錄中:nmsbase.jar、mssqlserver.jar、msutil.jar。n驅(qū)動(dòng)程序的名稱:驅(qū)動(dòng)程序的名稱:(參看該驅(qū)動(dòng)程序安裝目錄下的文檔參看該驅(qū)動(dòng)程序安裝目錄下的文檔)n “com.microsoft.jdbc.sqlserver.SQLServerDriver”。n加載加載MS SQLSERVER 2000 JDBC驅(qū)動(dòng)程序:驅(qū)動(dòng)程序:n Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDri
6、ver);2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要n建立數(shù)據(jù)庫(kù)連接:建立數(shù)據(jù)庫(kù)連接:n String url =jdbc:microsoft:sqlserver: /127.0.0.1:1433;n Connection con=DriverManager.getConnection(url,admin,xyz );n con.setCatalog(bookTest);2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要3、連接MySQLnJDBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序(官方網(wǎng)站官方網(wǎng)站):nMySQL 5.0 mysqlnMySQL 4.0 mysqlgan加載加載MySQL JDBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序:驅(qū)動(dòng)程
7、序的名稱:驅(qū)動(dòng)程序的名稱:(參看相應(yīng)參看相應(yīng)文檔文檔) :Class.forName(com.mysql.jdbc.Driver).newInstance(); MySQL4. 0:Class.forName(org.gjt.mm.mysql.Driver); 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要n建立數(shù)據(jù)庫(kù)連接:建立數(shù)據(jù)庫(kù)連接: String url =jdbc:mysql:/localhost:3306/; Connection con=DriverManager.getConnection(url, root,); con.setCatalog(“test”); /設(shè)置缺省數(shù)據(jù)庫(kù)設(shè)置
8、缺省數(shù)據(jù)庫(kù)conn = DriverManager.getConnection(jdbc:mysql:/localhost:3306/test?user=root&password=);conn = DriverManager.getConnection( jdbc:mysql:/localhost/test?useUnicode=true&characterEncoding=gb2312, root,);2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要4、使用配置文件n在應(yīng)用程序所在的目錄中創(chuàng)建一個(gè)配置文件在應(yīng)用程序所在的目錄中創(chuàng)建一個(gè)配置文件db.cfg,該文件中的內(nèi)容為:該文件中
9、的內(nèi)容為: dbDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver dbIP dbPort=1433 dbUserName=admin dbPassword=xyz defaultDbName=bookTest2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要n利用類(lèi)的利用類(lèi)的load()方法可以從輸入流中讀入屬性值。示方法可以從輸入流中讀入屬性值。示例:例: Properties prop=new Properties(); prop.load(new FileInputStream(db.cfg);n讀入的配置信息是以讀入的配置信息是以(關(guān)鍵字,屬
10、性值關(guān)鍵字,屬性值)對(duì)的形式存放對(duì)的形式存放在對(duì)象在對(duì)象prop中的。中的。n例如要取得關(guān)鍵字例如要取得關(guān)鍵字dbDriver的屬性值,使用的屬性值,使用getProperty()方法:方法: String driver=prop.getProperty(dbDriver);driver中的值為中的值為“com.microsoft.jdbc.sqlserver.SQLServerDriver”。 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.3 JDBC編程n5、獲取數(shù)據(jù)庫(kù)信息、獲取數(shù)據(jù)庫(kù)信息nDatabaseMetaData對(duì)象對(duì)象DatabaseMetaData dbma=con.getM
11、etaData();n方法:方法:n取得數(shù)據(jù)庫(kù)的基本信息getURL,getUserName(),getDatabaseProduceName(),getDatabaseProduceVersion(),isReadOnly(),getDriverName(),getDriverVersion()n取得表信息 getTabels() 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.3 JDBC編程n取得各列的信息取得各列的信息 getColumns()n取得索引信息取得索引信息 getIndexInfo() 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.4 數(shù)據(jù)庫(kù)查詢 所有所有SQL語(yǔ)句都是通過(guò)
12、語(yǔ)句都是通過(guò)Statement或其子類(lèi)或其子類(lèi)(PreparedStatement, CallableStatement )的對(duì)象實(shí)現(xiàn)。的對(duì)象實(shí)現(xiàn)。n1、Statement 對(duì)象對(duì)象用于一般用于一般SQL查詢語(yǔ)句的執(zhí)行查詢語(yǔ)句的執(zhí)行 n創(chuàng)建:用Connection對(duì)象的createStatement方法Statement stmt=con.createStatement(); 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.4數(shù)據(jù)庫(kù)查詢 nStatement n執(zhí)行:executeQuery,executeUpdate,executeString tsql=“select name,age fr
13、om table1”; ResultSet rs=stmt.executeQuery(tsql);非select語(yǔ)句:int nRet=stmt.executeUpdate(tsql);execute方法用于:返回多個(gè)結(jié)果集、多個(gè)更新集n關(guān)閉:close stmt.close();2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.4數(shù)據(jù)庫(kù)查詢 n2、PreparedStatement 對(duì)象對(duì)象可以將可以將SQL語(yǔ)句預(yù)編譯,還可以內(nèi)嵌參數(shù)語(yǔ)句預(yù)編譯,還可以內(nèi)嵌參數(shù)String sql=“Select * from table1 where id=”+nID+” and name=”+strName+
14、”;或:或:PreparedStatement ps=con.preparedStatement(“delete from table1 where id=? And name=?”); ps.setInt(1,nID); ps.setString(2,strName); ps.executeUpdate();2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要方法1 PreparedStatement update=con.prepareStatement(insert into bookInfo values(?,?,?,?); update.setString(1, B0003); update.s
15、etString(2, c+); update.setFloat(3, 78.50f); update.setString(4, “清華大學(xué)出版社清華大學(xué)出版社”); update.executeUpdate();2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要方法2PreparedStatement update=con.prepareStatement(insert into bookInfo values(?,?,?,?); Object line=B0003,C+, new Float(78.50),清華大學(xué)清華大學(xué); for(int i=1;i=line.length;i+) update.
16、setObject(i,linei-1); update.executeUpdate();2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.4數(shù)據(jù)庫(kù)查詢 n3、CallableStatement 對(duì)象對(duì)象用于執(zhí)行存儲(chǔ)過(guò)程用于執(zhí)行存儲(chǔ)過(guò)程創(chuàng)建:創(chuàng)建:Connection對(duì)象的對(duì)象的PrepareCall()方法方法 CallableStatement cs=con.prepareCall(“call Query1”); call 存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程名 call 存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程名(?,?,) ?=call 存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程名(?,?,)2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要n4、ResultS
17、et:對(duì)象對(duì)象nResultSet對(duì)象一次只能看到一個(gè)數(shù)據(jù)行,通過(guò)next( )方法移動(dòng)到下一行,得到一行數(shù)據(jù),然后通過(guò)getXxx( )方法獲取改行的字段值。它的常用方法如下:nboolean absolute( int row) 移到指定行nvoid afterLast( ) 移到最后一條記錄后面nvoid beforeFirst( ) 移到第一條記錄前面nboolean first( ) 移到第一條記錄上nboolean last( ) 移到最后一條記錄上nboolean isBeforeFirst( ) 指針是否在第一條記錄前面nboolean isAfterLast( ) 指針是否在
18、最后一條記錄后面nboolean next( ) 移動(dòng)記錄指針到下一筆記錄2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.4數(shù)據(jù)庫(kù)查詢 nResultSet rs=st.executeQuery(“Select * from table1”); while(rs.next() rs.getInt , rs.getString , 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.5 更新、添加、刪除記錄 n修改、插入和刪除操作修改、插入和刪除操作 update,insert,delete 語(yǔ)句語(yǔ)句n創(chuàng)建和刪除表創(chuàng)建和刪除表 Create Table語(yǔ)句語(yǔ)句n增加和刪除表中的列增加和刪除表中的列 Alter Table語(yǔ)句語(yǔ)句 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要13.6 JDBC事務(wù)支持事務(wù)由一個(gè)或多個(gè)事務(wù)由一個(gè)或多個(gè)SQL語(yǔ)句請(qǐng)求組成,將多條語(yǔ)句請(qǐng)求組成,將多條SQL請(qǐng)求組合為事務(wù)的目的是維護(hù)數(shù)據(jù)庫(kù)的完整性。請(qǐng)求組合為事務(wù)的目的是維護(hù)數(shù)據(jù)庫(kù)的完整性。 nConnection對(duì)象的方法:對(duì)象的方法:n setAutoCommit(false)ncommit()nrollback() 2022-3-15數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要try con.setAutoCommit(false); / 設(shè)置為非自動(dòng)遞交模式設(shè)置為非自動(dòng)遞交模式 Prepared
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 事業(yè)單位新型聘用協(xié)議2024版模板版
- 樂(lè)器買(mǎi)賣(mài)合同 集合3篇
- 二零二五年高性能混凝土施工技術(shù)勞務(wù)分包合同范本3篇
- 二零二五年度版權(quán)許可合同:網(wǎng)絡(luò)游戲著作權(quán)授權(quán)2篇
- 2025年度不動(dòng)產(chǎn)房產(chǎn)證購(gòu)房合同附帶房地產(chǎn)稅收減免服務(wù)協(xié)議3篇
- 個(gè)性化2024年事故一次性補(bǔ)償合同版B版
- 二零二五版環(huán)境工程實(shí)習(xí)生實(shí)習(xí)勞動(dòng)合同書(shū)2篇
- 專(zhuān)項(xiàng)產(chǎn)品購(gòu)銷(xiāo)協(xié)議樣本版B版
- 泰州學(xué)院《教育研究方法(量化)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024建筑施工合同示范文本范文
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國(guó)典當(dāng)行業(yè)發(fā)展前景預(yù)測(cè)及融資策略分析報(bào)告
- 《乘用車(chē)越野性能主觀評(píng)價(jià)方法》
- 幼師個(gè)人成長(zhǎng)發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語(yǔ)試題及解答參考
- 批發(fā)面包采購(gòu)合同范本
- 乘風(fēng)化麟 蛇我其誰(shuí) 2025XX集團(tuán)年終總結(jié)暨頒獎(jiǎng)盛典
- 2024年大數(shù)據(jù)分析公司與中國(guó)政府合作協(xié)議
- 一年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)匯編
- 中醫(yī)基礎(chǔ)理論課件
評(píng)論
0/150
提交評(píng)論