數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要_第1頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要_第2頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要_第3頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要_第4頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)概要_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論