版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1JAVA數(shù)據(jù)庫(kù)連接2本章目標(biāo)p了解JDBC的概念及必要性p了解JDBC驅(qū)動(dòng)程序類(lèi)型 p理解JDBC 程序的結(jié)構(gòu)p運(yùn)用JDBC進(jìn)行數(shù)據(jù)庫(kù)編程 3數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)技術(shù)簡(jiǎn)介 客戶(hù)機(jī)/服務(wù)器應(yīng)用程序 數(shù)據(jù)庫(kù)編程數(shù)據(jù)庫(kù)編程O(píng)DBCJDBC兩個(gè)常用的API數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)執(zhí)行 SQL 語(yǔ)句檢索查詢(xún)結(jié)果 4數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)ODBC客戶(hù)機(jī)/服務(wù)器 GUI應(yīng)用程序ODBC(開(kāi)放式數(shù)據(jù)庫(kù)連接)(Microsoft 提供)插 入刪 除修 改應(yīng)用程序編程接口 查詢(xún) 5JDBC JDBC(Java 數(shù)據(jù)庫(kù)連接)(sun公司提供)Java 應(yīng)用程序編程接口Java應(yīng)用程序數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù) 插 入修 改刪 除查詢(xún) 6JDBC 驅(qū)動(dòng)程序的類(lèi)
2、型JDBC 驅(qū)動(dòng)程序的類(lèi)型 JDBC-ODBC橋驅(qū)動(dòng)程序及橋驅(qū)動(dòng)程序及ODBC驅(qū)動(dòng)程序驅(qū)動(dòng)程序 本地本地API部分部分Java驅(qū)動(dòng)程序驅(qū)動(dòng)程序 JDBC-Net 純純Java驅(qū)動(dòng)程序驅(qū)動(dòng)程序 本地協(xié)議純本地協(xié)議純Java驅(qū)動(dòng)程序驅(qū)動(dòng)程序 7 JDBC 體系結(jié)構(gòu) 2-1Java 程序 JDBC 驅(qū)動(dòng)程序數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)SQL 命令 結(jié)果 8JDBC 體系結(jié)構(gòu) 2-2 應(yīng)用層應(yīng)用層 Driver StatementResultSet Connection 各接口驅(qū)動(dòng)層驅(qū)動(dòng)層 9java.sql 包 3-1 接口名 說(shuō)明 Connection此接口表示與數(shù)據(jù)的連接PreparedStatement此接口
3、用于執(zhí)行預(yù)編譯的 SQL 語(yǔ)句 ResultSet此接口表示了查詢(xún)出來(lái)的數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)果集Statement此接口用于執(zhí)行 SQL 語(yǔ)句并將數(shù)據(jù)檢索到 ResultSet 中 10java.sql 包 3-2類(lèi)名類(lèi)名 說(shuō)明說(shuō)明 DriverManager此類(lèi)用于加載和卸載各種驅(qū)動(dòng)程序并建立與數(shù)據(jù)庫(kù)的連接Date此類(lèi)包含將 SQL 日期格式轉(zhuǎn)換成 Java 日期格式的各種方法Time此類(lèi)用于表示時(shí)間TimeStamp此類(lèi)通過(guò)添加納秒字段為時(shí)間提供更高的精確度 11JDBC 程序訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的步驟 2-1開(kāi) 始導(dǎo)入 java.sql包 加載并注冊(cè)驅(qū)動(dòng)程序創(chuàng)建一個(gè) Connection 對(duì)象創(chuàng)建一個(gè) S
4、tatement 對(duì)象執(zhí)行語(yǔ)句關(guān)閉ResultSet 對(duì)象關(guān)閉Statement對(duì)象關(guān)閉連接結(jié) 束使用ResultSet對(duì)象12Friends 表的結(jié)構(gòu)表的結(jié)構(gòu)JDBC 程序訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的步驟 2-2p它演示訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的各個(gè)步驟p在執(zhí)行示例 1 中的程序之前,SQL Server 中應(yīng)該存在一個(gè) 名為 friends 的表演示:示例 1列名稱(chēng)列名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型名稱(chēng) Varchar(50)地址Varchar(50)電話(huà)Numeric入職日期Datetime工資Numeric/* 2005 Aptech Limited * 版權(quán)所有 */import java.sql.SQLException;
5、import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/* 這個(gè)類(lèi)演示訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)需遵循的各個(gè)步驟. * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbctest /* 構(gòu)造方法 */ protected Jdbctest() /*這是 main 方法. */public static void main(String args) try Class.forName(sun.
6、jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery(select * from friends); while (rs.next() System.out.print(rs.get
7、String(1) + t); System.out.print(rs.getString(2) + t); System.out.print(rs.getInt(3) + t); System.out.print(rs.getDate(4) + t); System.out.println( ); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 13JDBC 查詢(xún)2-1SQL 查詢(xún)字符串 executeQuery() 方法 作為參數(shù)傳遞ResultSet 返回查詢(xún)數(shù)據(jù)SEL
8、ECT name, email, phone FROM colleagues;使用 SQL 語(yǔ)句,查詢(xún)可編寫(xiě)為:String str = SELECT emp_id, lname, fname FROM colleagues;Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(str);使用 JDBC 編寫(xiě)此查詢(xún),則代碼為:Statement接口接口14JDBC 查詢(xún)2-2p它演示 SQL 中 sum( ) 方法的用法演示:示例 2/* * Jdbctest2 */import java.sql.S
9、QLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/* 這個(gè)類(lèi)演示 SQL 中 sum() 方法的用法 * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbctest2 /* 構(gòu)造方法*/ protected Jdbctest2() /* 這是 main 方法*/ public static void main(String args) try C
10、lass.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery( select hiredate, sum(salary) from friends grou
11、p by hiredate); while (rs.next() System.out.print(rs.getDate(1) + t); System.out.print(rs.getInt(2) + t); System.out.println( ); rs.close; s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 15演示:示例 3p它演示 SQL 中 INSERT 語(yǔ)句的用法/* * Jdbctest3 */import java.sql.SQLException;import java
12、.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;/* 這個(gè)類(lèi)演示 INSERT 語(yǔ)句的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbctest3 /* 構(gòu)造方法 */ protected Jdbctest3() JDBC 插入數(shù)據(jù)實(shí)現(xiàn)/* 這是 main 方法*/public static void main(String args) try Class.forName(sun
13、.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; String str = INSERT INTO “ + friends(name,address,salary)“ + VALUES(朱八,深圳 ,25690); Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); int rowcou
14、nt = s.executeUpdate(str); String str1 = select name, sum(salary) “ +from friends + group by name; ResultSet rs = s.executeQuery(str1); while (rs.next() System.out.print(rs.getString(1) + t); System.out.print(rs.getInt(2) + t); System.out.println( ); rs.close(); s.close(); con.close(); catch (SQLExc
15、eption ce) System.out.println(ce); 16JDBC 刪除和修改實(shí)現(xiàn)p它演示 SQL 中各種命令的用法演示:示例 4/* * Jdbc2 */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/* 這這個(gè)類(lèi)演示 SQL 中命令的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */class Jdbc2 /* 構(gòu)造方法.*/ protected J
16、dbc2() public static void main(String args) Connection con; Statement stmt; String url; String sql; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try url = jdbc:odbc:test; con = DriverManager.getConnection(url); sql = Delete from friends w
17、here rtrim(name)like張三 ; System.out.println( ); stmt = con.createStatement(); stmt.executeUpdate(sql); System.out.println(張三 的記錄已刪除“); stmt.close(); con.close(); con = DriverManager.getConnection(url); sql = Update friends set address=青島 where “ + rtrim(name) like 李四; ; System.out.println( ); stmt =
18、 con.createStatement(); stmt.executeUpdate(sql); stmt.close(); con.close(); System.out.println(李四的記錄已更新); catch (SQLException ce) System.out.println(ce); 17PreparedStatement接口 3-1 PreparedStatement接口(預(yù)編譯的 SQL 語(yǔ)句)PreparedStatement 用于提高運(yùn)行時(shí)效率執(zhí)行 PreparedStatement 對(duì)象比執(zhí)行 Statement 對(duì)象快Statement 接口接口18Prepa
19、redStatement接口 3-2 p它演示了PreparedStatement 的用法演示:示例 5/* * CourseAppl */import java.sql.SQLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;import java.sql.PreparedStatement;/* 這個(gè)類(lèi)演示 SQL 中 PreparedStatement 的用法*/class CourseAppl pri
20、vate Connection con;private String url;private String serverName;private String portNumber;private String databaseName;private String userName;private String password;private String sql;CourseAppl() url = jdbc:microsoft:sqlserver:/; serverName = “l(fā)ocalhost; portNumber = 1433; databaseName = “test; u
21、serName = “sa; password = “sa; private String getConnectionUrl() return url + serverName + : + portNumber + ;databaseName = + databaseName + ; private java.sql.Connection getConnection() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con = DriverManager.getConnection( getConnection
22、Url(), userName, password); if (con != null) System.out.println(連接成功!); catch (Exception e) e.printStackTrace(); System.out.println(getConnection() 內(nèi)的錯(cuò)誤跟蹤: + e.getMessage(); return con; public void display() try con = getConnection(); PreparedStatement pstmt = con.prepareStatement( UPDATE friends SE
23、T salary = ? WHERE name like ?); pstmt.setInt(1, 10000 ); pstmt.setString(2, 李四 ); pstmt.executeUpdate(); System.out.println(“記錄已更新!); Statement s = con.createStatement(); String sql = SELECT * FROM friends ; ResultSet rs = s.executeQuery(sql); while (rs.next() System.out.println( ); System.out.prin
24、t(rs.getInt(1) + ); System.out.println(rs.getInt(5); catch (SQLException ce) System.out.println(ce); public static void main(String args) CourseAppl retObj = new CourseAppl(); retObj.display(); 19PreparedStatement 接口 3-3 p它演示在基于條件的 SQL 查詢(xún)中如何使用 PreparedStatement,其中條件在 IN 參數(shù)中給出演示:示例 6import java.sql.S
25、QLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.PreparedStatement;/* 這個(gè)類(lèi)演示在基于條件的 SQL 查詢(xún)中使用 PreparedStatement*/class RetrieveRecords private Connection con;private String url;private String serverName, portNumber, databaseName, userName;p
26、rivate String sql;RetrieveRecords() url = jdbc:microsoft:sqlserver:/; serverName = “l(fā)ocalhost; portNumber = 1433; databaseName = “test; userName = “sa; password = “sa;private String getConnectionUrl() return url + serverName + : + portNumber + ;databaseName = + databaseName + ; private java.sql.Conn
27、ection getConnection() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con = DriverManager.getConnection( getConnectionUrl(), userName, password); if (con != null) System.out.println(連接成功!); catch (Exception e) e.printStackTrace(); System.out.println(“getConnection() 內(nèi)的錯(cuò)誤跟蹤: + e.get
28、Message(); return con; public void display() try con = getConnection(); sql = select * from Friends where Salary ?; PreparedStatement pstmt = con.prepareStatement( sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); pstmt.setInt(1, 5000); ResultSet rs = pstmt.executeQuery(); while (rs
29、.next() System.out.print(rs.getString(1) + t); System.out.print(rs.getString(2) + t); System.out.print(rs.getInt(3) + t); System.out.print(rs.getDate(4) + t); System.out.print(rs.getInt(5) + t); System.out.println( ); rs.close(); pstmt.close(); con.close(); catch (SQLException ce) System.out.println
30、(ce); /* 這是 main 方法*/ public static void main(String args) RetrieveRecords retRec = new RetrieveRecords(); retRec.display(); 20使用結(jié)果集 3-1 pResultSet 對(duì)象完全依賴(lài)于 Statement 對(duì)象和 Connection 對(duì)象p每次執(zhí)行 SQL 語(yǔ)句時(shí),都會(huì)用新的結(jié)果重寫(xiě)結(jié)果集p當(dāng)相關(guān)的 Statement 關(guān)閉時(shí),ResultSet 對(duì)象會(huì)自動(dòng)關(guān)閉Next( )get()此方法將光標(biāo)從當(dāng)前位置下移一行 從 ResultSet 對(duì)象返回?cái)?shù)據(jù) 21使用結(jié)果集 3-2 p它演示對(duì)當(dāng)前行的處理p使用 next() 方法時(shí),記錄是按順序處理的p必須按照數(shù)據(jù)返回的順序處理每行中的數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)光伏逆變器產(chǎn)業(yè)發(fā)展趨勢(shì)規(guī)劃分析報(bào)告
- 2025年人教版七年級(jí)英語(yǔ)上冊(cè)階段測(cè)試試卷
- 2025-2030年中國(guó)中央廚房行業(yè)運(yùn)行動(dòng)態(tài)及投資發(fā)展前景預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)三溴氧磷市場(chǎng)競(jìng)爭(zhēng)格局與前景發(fā)展策略分析報(bào)告
- 2025-2030年中國(guó)PET保護(hù)膜市場(chǎng)競(jìng)爭(zhēng)格局展望及投資策略分析報(bào)告
- 二零二五年度高空廣告牌安裝及廣告內(nèi)容審查與效果跟蹤協(xié)議3篇
- 2025-2030年中國(guó)1,4丁二醇(BDO)市場(chǎng)發(fā)展動(dòng)態(tài)及前景趨勢(shì)分析報(bào)告
- 2025年牛津譯林版四年級(jí)數(shù)學(xué)上冊(cè)月考試卷
- 2024年邢臺(tái)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2025年滬教版選修2地理上冊(cè)階段測(cè)試試卷含答案
- 傳媒互聯(lián)網(wǎng)行業(yè)幣價(jià)影響因素分析:對(duì)比利率、M2、納指、美元指數(shù)、黃金走勢(shì)
- 二年級(jí)上冊(cè)數(shù)學(xué)連算口算題卡(-打印版)
- 2025屆河南省南陽(yáng)市宛城區(qū)九上數(shù)學(xué)期末監(jiān)測(cè)試題含解析
- 曳引驅(qū)動(dòng)電梯調(diào)試作業(yè)指導(dǎo)書(shū)
- JT-T-617.4-2018危險(xiǎn)貨物道路運(yùn)輸規(guī)則第4部分:運(yùn)輸包裝使用要求
- 《朝天子·詠喇叭-王磐》核心素養(yǎng)目標(biāo)教學(xué)設(shè)計(jì)、教材分析與教學(xué)反思-2023-2024學(xué)年初中語(yǔ)文統(tǒng)編版
- 2021年7月自考06087工程項(xiàng)目管理試題及答案含解析
- 奧爾波特價(jià)值觀量表
- 旅游商圈城市商圈oto系統(tǒng)
- 三年級(jí)加法豎式題50道
- 阿里國(guó)際站合作協(xié)議
評(píng)論
0/150
提交評(píng)論