數(shù)據(jù)庫連接(JDBC)及其.ppt

上傳人:za****8 文檔編號:15636148 上傳時間:2020-08-27 格式:PPT 頁數(shù):23 大?。?47.84KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)庫連接(JDBC)及其.ppt_第1頁
第1頁 / 共23頁
數(shù)據(jù)庫連接(JDBC)及其.ppt_第2頁
第2頁 / 共23頁
數(shù)據(jù)庫連接(JDBC)及其.ppt_第3頁
第3頁 / 共23頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)庫連接(JDBC)及其.ppt》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫連接(JDBC)及其.ppt(23頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、第11章 數(shù)據(jù)庫連接(JDBC)及其應(yīng)用,本章要點(diǎn): 數(shù)據(jù)源的配置 數(shù)據(jù)庫驅(qū)動程序加載的方式 數(shù)據(jù)庫操作的流程 事務(wù)控制 預(yù)查詢,11.1 JDBC基本編程概念,JDBC協(xié)議遵循了微軟公司的ODBC模型,并與ODBC建立在同一方案的基礎(chǔ)之上:遵循JDBC API協(xié)議的程序和JDBC驅(qū)動程序管理器通信,驅(qū)動程序管理器用嵌入的驅(qū)動程序訪問數(shù)據(jù)庫。 從程序設(shè)計(jì)的角度來看,用JDBC類編程與使用一般的Java類編程并沒有太大的不同。,11.1.1 設(shè)定ODBC數(shù)據(jù)源,------語法------2000版本 String URL=jdbc:microsoft:sqlserver://localhost

2、:1433; DatabaseName=news; Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); Connection con = DriverManager.getConnection(URL,sa,sa);,sql server數(shù)據(jù)庫驅(qū)動類的完全限定類名,演示:在工程中引入JDBC驅(qū)動程序包,數(shù)據(jù)庫名稱,------語法------2005版本 String URL=jdbc:sqlserver://localhost:1433; DatabaseName=news; Class.forName(com.micro

3、soft. sqlserver. jdbc.SQLServerDriver); Connection con = DriverManager.getConnection(URL,sa,sa);,sql server數(shù)據(jù)庫驅(qū)動類的完全限定類名,演示:在工程中引入JDBC驅(qū)動程序包,數(shù)據(jù)庫名稱,1. SQL Server 2000數(shù)據(jù)庫連接字符串 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance();Connectionconn=java.sql.DriverManager.getConnection(j

4、dbc:microsoft:sqlserver://數(shù)據(jù)庫服務(wù)器名或地址:1433;DatabaseName=數(shù)據(jù)庫名,用戶名,密碼); 所需jar包:msbase.jar、mssqlserver.jar、msutil.jar 2. SQL Server 2005 數(shù)據(jù)庫連接字符串: Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();Connectionconn=java.sql.DriverManager.getConnection(jdbc:sqlserver://數(shù)據(jù)庫服務(wù)器名或地址:143

5、3;DatabaseName=數(shù)據(jù)庫名,用戶名,密碼);,11.1.2 數(shù)據(jù)庫URL 要連接一個數(shù)據(jù)庫,必須要指定源數(shù)據(jù)庫,有時也需要指定相應(yīng)的參數(shù)。例如:網(wǎng)絡(luò)協(xié)議驅(qū)動程序需要指定端口、ODBC驅(qū)動程序等。 JDBC用類似于常見的Net URL句法描述數(shù)據(jù)庫。例如:我們通過JDBCODBC橋連接一個Access數(shù)據(jù)庫myAccess: jdbc:odbc:myAccess String driverName=sun.jdbc.odbc.JdbcOdbcDriver; String URL=jdbc:odbc:db1; JDBC常規(guī)的URL句法是: jdbc:subprotocol name

6、:datasource 連接到Oracle數(shù)據(jù)庫及SQL Server的URL分別如下: Oracle數(shù)據(jù)庫 jdbc:oracle:thin:127.0.0.1:1521:wangwd,數(shù)據(jù)庫名稱,因?yàn)檫B接Oracle數(shù)據(jù)庫一般是通過客戶端去進(jìn)行的, Oracle客戶端也被稱為瘦型機(jī)(thin),對于127.0.0.1這是本地IP地址,也就是說Oracle數(shù)據(jù)庫是安裝在本機(jī)上的,當(dāng)然在這里用戶也可以采用如下的格式: jdbc:oracle:thin:localhost:1521:wangwd 1521是Oracle訪問端口號,wangwd是建立的Oracle數(shù)據(jù)庫的名字,用戶可以換成自己喜歡

7、的名字。 SQL Server 2000數(shù)據(jù)庫URL jdbc:microsoft:sqlserver://localhost:1433 在這里采用默認(rèn)的數(shù)據(jù)庫,如果用戶自己創(chuàng)立的數(shù)據(jù)庫如myBook,可以采用如下的格式: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myBook,SQL Server 2005數(shù)據(jù)庫URL jdbc:sqlserver://localhost:1433 在這里采用默認(rèn)的數(shù)據(jù)庫,如果用戶自己創(chuàng)立的數(shù)據(jù)庫如myBook,可以采用如下的格式: jdbc:sqlserver://localhost:14

8、33;DatabaseName=myBook 驅(qū)動程序全稱: com.microsoft.sqlserver.jdbc.SQLServerDriver,11.1.3 建立連接 驅(qū)動程序管理器(DriverManager)類是負(fù)責(zé)選擇數(shù)據(jù)庫驅(qū)動程序和建立到數(shù)據(jù)庫的連接的類,但驅(qū)動程序管理器只能激活已登錄的驅(qū)動程序。 登錄驅(qū)動程序的方法如下: 裝入一個驅(qū)動程序類以自己登錄驅(qū)動程序。例如可以用以下方式登錄Oracle驅(qū)動程序: Class.forName(oracle.jdbc.driver.OracleDriver); 用戶也可以用下面的方式登錄一個SQL Server的驅(qū)動程序: Class.

9、forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); 登錄我們剛剛建立的ODBC數(shù)據(jù)源的方法如下: Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);,現(xiàn)在我們假設(shè)安裝了Oracle數(shù)據(jù)庫,數(shù)據(jù)庫名字為wangwd,則得到一個數(shù)據(jù)庫的連接如下: Class.forName(oracle.jdbc.driver.OracleDriver);//登錄Oracle數(shù)據(jù)庫驅(qū)動程序 String url = jdbc:oracle:thin:localhost:1521:wangwd;//數(shù)據(jù)庫URL Stri

10、ng userName =scott;//登錄數(shù)據(jù)庫用戶名 String password = tiger;//用戶密碼 Connection con = DriverManager.getConnection(url, userName, password); 接著我們再以筆者安裝的SQL Server為例,并新建一個數(shù)據(jù)庫為studentmanager: Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); String url =jdbc:microsoft:sqlserver://localhost:1433; Dat

11、abaseName=studentmanager; String userName = sa; String password = ; Connection con = DriverManager.getConnection(url, userName, password);,11.1.4 建立會話 數(shù)據(jù)庫建立連接后,要想操縱數(shù)據(jù)庫,必須跟數(shù)據(jù)庫建立一個會話。所謂會話就是從建立一個數(shù)據(jù)庫連接到關(guān)閉數(shù)據(jù)庫連接所進(jìn)行的所有動作的總稱,這與數(shù)據(jù)庫會話是不同的??梢酝ㄟ^如下的代碼得到一個會話: tryStatement st = con.createStatement(); catch(SQLExce

12、ption e) 通過這段代碼我們可以知道,創(chuàng)建一個會話是建立在數(shù)據(jù)庫連接的基礎(chǔ)上的?,F(xiàn)在我們得到了一個默認(rèn)的會話。接下來就可以進(jìn)行數(shù)據(jù)庫的具體操作了。,11.1.5 操作數(shù)據(jù)庫 如果我們把數(shù)據(jù)庫(database)看作是一個倉庫,那到數(shù)據(jù)庫的連接(Connection)就可以假想成一條通往倉庫的陽光大道,那么會話(Statement)就可以看作是跑在這條大道上的一輛貨車,我們對數(shù)據(jù)庫進(jìn)行的不同的操作(SQL語句),就是對這輛貨車發(fā)出不同的指令(update、delete、query等),執(zhí)行的結(jié)果就是從數(shù)據(jù)庫中返回操作結(jié)果,這個結(jié)果就類似于從倉庫拉回不同的貨物。 1. 查詢 查詢操作是數(shù)據(jù)庫

13、中最基本的語句,通過如下的語句可以對數(shù)據(jù)庫執(zhí)行一個查詢,查詢的結(jié)果是以結(jié)果集(ResultSet)的形式返回的。 String sql = select * from student; ResultSet result = st.executeQuery(sql);,ResultSet類的若干方法,例11-1程序清單 QueryODBCTest.java /** * 通過這個程序,向讀者展示比較完整的JDBC數(shù)據(jù)庫操作的順序,在這個例子中主要展示的查詢 * 及格式輸出。 */ import java.sql.SQLException; import java.sql.Connection; i

14、mport java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; import java.sql.Date; public class QueryODBCTest private Connection con; public static void main(String args) QueryODBCTest test = new QueryODBCTest(); Connection con = test.getConnection(); String sql = select *

15、from student; test.getStudent(con, sql); ,public void getStudent(Connection con, String sql) try Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while(rs.next()) String name =rs.getString(姓名); String number = rs.getString(學(xué)號); Date date = rs.getDate(出生日期); String spe = r

16、s.getString(專業(yè)); String address = rs.getString(籍貫); System.out.println( n姓名: + name + t學(xué)號: + number + t出生日期: + date + t專業(yè): + spe + t籍貫: + address ); ,st.close(); con.close(); catch(SQLException e) e.printStackTrace(); public Connection getConnection() String url = jdbc:odbc:myAccess;//數(shù)據(jù)庫URL String

17、 userName = ;//登錄數(shù)據(jù)庫用戶名 String password = ;//用戶密碼 try //登錄JDBC-ODBC驅(qū)動程序 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); con = DriverManager.getConnection(url, userName, password); catch(SQLException e), e.printStackTrace(); catch(ClassNotFoundException ex) ex.printStackTrace(); return con; ,2. 建表 下面我

18、們將在SQL Server中利用數(shù)據(jù)庫的相關(guān)操作建立一個student表,并插入相關(guān)的記錄。 在創(chuàng)建一個表格時,我們是通過: st.execute(sql); 來實(shí)現(xiàn)的。execute方法的返回值是一個boolean型的,如果執(zhí)行成功就返回true,反之則返回false。 在執(zhí)行插入記錄的操作時,我們是通過: st.executeUpdate(sql); 來實(shí)現(xiàn)的。它的返回值是一個int型的數(shù)值,它表示當(dāng)前操作完成的記錄數(shù)。,3. 創(chuàng)建數(shù)據(jù)庫 在前面的示例中,我們都是通過直接將SQL語句嵌入到程序本身中,這種編碼方式我們習(xí)慣上稱之為硬編碼。硬編碼看起來比較容易編寫,但存在一個很大的缺點(diǎn),那就是

19、兼容性不強(qiáng),這里的兼容性指的是程序的兼容性。試想,假如我們按照以下的形式創(chuàng)建了一張表: String sql = CREATE TABLE SUTDENT(姓名 varchar(12) NOT NULL, +學(xué)號 varchar(10) NOT NULL, + 出生日期 datetime NOT NULL,專業(yè) varchar(10) NULL, +籍貫 varchar(30) NULL); 如果由于某種原因需要將籍貫的字段長度更改為50位字符長,那只有重新修改程序代碼,并重新編譯,重新發(fā)布,這樣做無疑是非常麻煩的?,F(xiàn)在我們可以將類似的SQL語句也通過配置文件配置,并且當(dāng)需要修改數(shù)據(jù)庫結(jié)構(gòu)時,

20、我們只需要簡單地修改一下屬性文件就可以了。,11.2 預(yù)查詢,接下來,我們再介紹JDBC在進(jìn)行查詢數(shù)據(jù)庫操作方面的一個新的特性:預(yù)查詢(prepared statement)。根據(jù)字面的意思,我們知道預(yù)查詢也就是在執(zhí)行真正的查詢工作之前先做一部分準(zhǔn)備工作,以適應(yīng)真正的查詢,這樣做的目的是為了減少數(shù)據(jù)庫操作的時間。 現(xiàn)在假設(shè)我們想從建立的數(shù)據(jù)庫中查詢符合條件的一條記錄: select 姓名,學(xué)號,專業(yè),籍貫 from student where 姓名 = 需要用戶輸入的信息 在這個SQL語句中,只有需要用戶輸入的信息是可變的,其他信息基本上不變,所以我們可以考慮把前面的信息先輸入到數(shù)據(jù)庫中,只要

21、用戶輸入想查詢的人名就可以了,這種情況就像是數(shù)據(jù)庫在等待填空一樣。 在JDBC中預(yù)查詢是用“?”來替代未知條件,那么上面的SQL語句就可以實(shí)現(xiàn)為: select 姓名,學(xué)號,專業(yè),籍貫 from student where 姓名 = ?,11.3 小結(jié),通過這一章的講述,使讀者能使我們的應(yīng)用程序與數(shù)據(jù)庫有機(jī)的結(jié)合起來,在這一章中,筆者通過示例示范了連接不同數(shù)據(jù)庫的方法,并分別講述了數(shù)據(jù)庫的相關(guān)操作,希望讀者在實(shí)際應(yīng)用中仔細(xì)體會。盡管現(xiàn)在JDBC對于某些功能的支持不是太好,但隨著JDBC2的應(yīng)用與發(fā)展,會有很大的轉(zhuǎn)變,在JDBC2中也會有更新的功能與改變體現(xiàn)出來,讀者可以查看Sun公司關(guān)于JDBC2設(shè)計(jì)規(guī)范。,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!