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

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

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

9.9 積分

下載資源

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

資源描述:

《數據庫連接(JDBC)及其.ppt》由會員分享,可在線閱讀,更多相關《數據庫連接(JDBC)及其.ppt(23頁珍藏版)》請在裝配圖網上搜索。

1、第11章 數據庫連接(JDBC)及其應用,本章要點: 數據源的配置 數據庫驅動程序加載的方式 數據庫操作的流程 事務控制 預查詢,11.1 JDBC基本編程概念,JDBC協議遵循了微軟公司的ODBC模型,并與ODBC建立在同一方案的基礎之上:遵循JDBC API協議的程序和JDBC驅動程序管理器通信,驅動程序管理器用嵌入的驅動程序訪問數據庫。 從程序設計的角度來看,用JDBC類編程與使用一般的Java類編程并沒有太大的不同。,11.1.1 設定ODBC數據源,------語法------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數據庫驅動類的完全限定類名,演示:在工程中引入JDBC驅動程序包,數據庫名稱,------語法------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數據庫驅動類的完全限定類名,演示:在工程中引入JDBC驅動程序包,數據庫名稱,1. SQL Server 2000數據庫連接字符串 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance();Connectionconn=java.sql.DriverManager.getConnection(j

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

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

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

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

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

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

10、ng userName =scott;//登錄數據庫用戶名 String password = tiger;//用戶密碼 Connection con = DriverManager.getConnection(url, userName, password); 接著我們再以筆者安裝的SQL Server為例,并新建一個數據庫為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 建立會話 數據庫建立連接后,要想操縱數據庫,必須跟數據庫建立一個會話。所謂會話就是從建立一個數據庫連接到關閉數據庫連接所進行的所有動作的總稱,這與數據庫會話是不同的??梢酝ㄟ^如下的代碼得到一個會話: tryStatement st = con.createStatement(); catch(SQLExce

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

13、中最基本的語句,通過如下的語句可以對數據庫執(zhí)行一個查詢,查詢的結果是以結果集(ResultSet)的形式返回的。 String sql = select * from student; ResultSet result = st.executeQuery(sql);,ResultSet類的若干方法,例11-1程序清單 QueryODBCTest.java /** * 通過這個程序,向讀者展示比較完整的JDBC數據庫操作的順序,在這個例子中主要展示的查詢 * 及格式輸出。 */ 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(學號); Date date = rs.getDate(出生日期); String spe = r

16、s.getString(專業(yè)); String address = rs.getString(籍貫); System.out.println( n姓名: + name + t學號: + 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;//數據庫URL String

17、 userName = ;//登錄數據庫用戶名 String password = ;//用戶密碼 try //登錄JDBC-ODBC驅動程序 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中利用數據庫的相關操作建立一個student表,并插入相關的記錄。 在創(chuàng)建一個表格時,我們是通過: st.execute(sql); 來實現的。execute方法的返回值是一個boolean型的,如果執(zhí)行成功就返回true,反之則返回false。 在執(zhí)行插入記錄的操作時,我們是通過: st.executeUpdate(sql); 來實現的。它的返回值是一個int型的數值,它表示當前操作完成的記錄數。,3. 創(chuàng)建數據庫 在前面的示例中,我們都是通過直接將SQL語句嵌入到程序本身中,這種編碼方式我們習慣上稱之為硬編碼。硬編碼看起來比較容易編寫,但存在一個很大的缺點,那就是

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

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

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

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


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