




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第5章 Java數據庫編程主要內容: 5.1. 數據庫編程基礎5.2. JDBC5.3. 數據庫編程15.1. 數據庫編程基礎1. 數據庫(Database,簡稱DB)是在計算機系統(tǒng)中按照一定的數據結構(模型)組織、存儲在計算機存儲器中的相互聯系的數據集合。數據庫可以供多種用戶共享,具有較小的冗余度和較高的數據獨立性。2. 數據庫管理系統(tǒng)(Database Management System, 簡稱DBMS)是位于用戶與操作系統(tǒng)之間的一層數據管理軟件,是數據庫系統(tǒng)的重要組成部分,對數據庫的所有操作和控制都是通過它來進行的。2關系數據庫模型把數據用表的集合來表示.數據表由一個或多個相關的數據項組
2、成表視 圖. 訂單 客戶 產品 記 錄關系數據庫模型5.1. 數據庫編程基礎31. 數據庫的概念關系數據庫可以由多個表組成,表與表之間可以用不同的方式相互關聯.例如: 學生表: 成績表:703892951成績學號劉三3李二2張一1姓名學號劉三703姓名成績學號關系數據庫模型5.1. 數據庫編程基礎41. 數據庫的概念表、記錄、行列關系:課程編號課程名稱學時學期平均成績A001Java編程基礎32179A003C語言48185B004信號與系統(tǒng)32267C001通信原理32266屬性行(記錄)列關系數據庫模型5.1. 數據庫編程基礎5結構化查詢語言(SQL)SQL是結構化查詢語言(Structu
3、red Query Language)的簡稱。SQL語言是IBM公司在20世紀70年代所開發(fā)的一種數據庫操作語言。它是一個綜合的、功能強大的關系型數據庫語言,能實現數據庫的創(chuàng)建、更新、刪除、數據定義、文本限制、出現控制等操作,被公認為是數據庫操作不可缺少的工具。SQL現在已經成為關系數據庫的標準語言。美國國家標準協(xié)會(ANSI)和國際標準化組織(ISO)制定了一系列的SQL標準。5.1. 數據庫編程基礎6SELECT語句數據查詢是數據庫的常用、核心的操作。SQL語言提供了SELECT語句進行數據庫查詢。SELECT語句例子: Select 學號,姓名,成績 From 學生表,成績表 Where
4、 成績60結構化查詢語言(SQL)5.1. 數據庫編程基礎7更新記錄INSERTInsert語句用于向數據庫的某個表中插入新的記錄.INSERT語句例子: Insert into 學生表(學號,姓名) Values(041201,張三)結構化查詢語言(SQL)5.1. 數據庫編程基礎8更新記錄UPDATEUPDATE語句用于數據修改。UPDATE語句示例: update 成績表 set 成績=80 where 學號=041201結構化查詢語言(SQL)5.1. 數據庫編程基礎9更新記錄DELETEDELETE語句進行數據刪除。DELETE語句示例: DELETE FROM 學生表 WHERE
5、姓名=張三 結構化查詢語言(SQL)5.1. 數據庫編程基礎105.2. JDBCJDBC是個商標名而不是縮寫。但經常被認為是Java Database Connectivity的縮寫。即Java數據庫連接API。JDBC是由一組用Java語言編寫的類和接口組成。JDBC為開發(fā)人員提供了一個標準的API,允許用戶從Java應用程序中訪問任何表格數據源。JDBC支持SQL工業(yè)標準.JDBC有兩個重要的組件:驅動程序管理器和JDBC-ODBC橋.11JDBC技術簡介驅動程序管理器: JAVA應用程序平臺與數據庫無關性是通過驅動程序管理器實現的.在開發(fā)過程中需要為不同的數據庫使用不同的JDBC驅動程
6、序,這些驅動程序的選擇由驅動程序管理器完成.JDBC-ODBC橋 Microsoft提供了一個ODBC(開放式數據庫互連)的技術,使windows應用程序能訪問不同的數據庫.Java程序不能直接與ODBC驅動器通信.SUN公司提供了由JDBC訪問ODBC數據源的驅動器JDBC-ODBC橋接器.5.2. JDBC12JDBC API為Java開發(fā)者使用數據庫提供了統(tǒng)一的編程接口。即JDBC建立了一種不依賴具體DBMS編程的機制,使開發(fā)人員不必考慮所用的具體數據庫,就能編寫出客戶端/服務器數據庫應用程序.JDBC 30版本 :java.sqljavax.sql5.2. JDBCJDBC技術簡介13
7、java.sql 這個包中的類和接口主要針對基本的數據庫編程服務,如生成連接、執(zhí)行語句以及準備語句和運行批處理查詢等。同時也有一些高級的處理,比如批處理更新、事務隔離和可滾動結果集等。javax.sql 它主要為數據庫方面的高級操作提供了接口和類。如為連接管理、分布式事務和舊有的連接提供了更好的抽象,它引入了容器管理的連接池、分布式事務和行集等。 5.2. JDBCJDBC 30版本 :14JDBC能夠提供以下功能 1)與數據庫建立連接 2)向數據庫發(fā)送SQL語句 3)處理數據庫返回的結果5.2. JDBCJDBC技術簡介151)與數據庫建立連接在JAVA應用程序中要對數據庫中的數據進行操作,
8、首先就要與數據庫進行連接.與數據庫連接一般分為兩個步驟:1.裝入驅動器:所有的與數據庫交互操作都是借助于DBMS特定的驅動器而發(fā)生的.所以,進行數據處理之前,需要確定DBMS廠商提供的驅動器并裝入它.2.連接到數據庫:在裝入DBMS特定驅動器后,就可以連接需要操作的數據庫.5.2. JDBC16裝入數據庫驅動程序為了建立與數據庫的連接,需要調用Class類的forName()方法來裝入數據庫特定的驅動器.如果用JDBC-ODBC橋接器來與數據庫通信,則用語句: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)如果用JDBC Driver(JDBC驅動器
9、)與數據庫通信,則根據不同的數據庫使用下面的語句: 裝載MS SQL Server驅動 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”) 裝載Oracle JDBC驅動 Class.forName(oracle.jdbc.driver.OracleDriver)5.2. JDBC17 在裝入JDBC驅動器時可能發(fā)生異常,因此要捕獲這個異常try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) System.out.
10、println(Driver not found);5.2. JDBC裝入數據庫驅動程序18連接到數據庫用 DriverManager(驅動程序管理器)類中的getConnection方法建立與數據庫的連接. 例如: Connection conn = DriverManager.getConnection(“jdbc:odbc:數據源名”,”數據源訪問用戶名”,”數據源訪問密碼”); conn是Connection類的對象,代表了與數據庫的連接.在應用程序中可以使用多個Connection對象與一個或多個數據庫連接.5.2. JDBC19DriverManager獲得數據庫連接 Driver
11、Manager.getConnection(parameter ) 重載方法:static Connection getConnection(String url) static Connection getConnection(String url,Properties info) static Connection getConnection(String url,String user,String password) 5.2. JDBC20DriverManagerURL的語法如下:jdbc: 協(xié)議 jdbc子協(xié)議 子名 數據庫名 驅動程序URLJDBC-ODBCsun.jdbc.od
12、bc.JdbcOdbcDriverjdbc:odbc:odbcsourceOracle thin Driveroracle.jdbc.driver.OracleDriverjdbc:oracle:thin:ip:port:sidMySQLorg.gjt.mm.mysql.Driverjdbc:mysql:/ip/database5.2. JDBC212)向數據庫發(fā)送SQL語句要將應用程序對數據庫操作的SQL語句發(fā)送給DBMS,要執(zhí)行如下兩步操作: 1) 首先使用已經建立好的Connection對象的createStatement()方法創(chuàng)建一個Statement對象. Statement st
13、mt = conn.createStatement(); 2) 然后定義一個變量存放要發(fā)送的SQL語句。如:String strS = “select * from student”; String strI = “Insert into 學生表(學號,姓名) Values(041201,張三)”;如果是一般的SELECT查詢語句要發(fā)送,則使用executeQuery(strS)方法。 如果是insert、update或delete修改語句,則使用executeUpdate(strI)方法。5.2. JDBC223)處理數據庫返回的結果利用Statement對象的executQuery()方法
14、發(fā)送的SQL查詢語句,會返回一個ResultSet對象,存放結果集。ResultSet對象包含了訪問結果集中數據的很多方法。典型的有:getString(int n)getInt(int n)getFloat(int n)getDate(int n)next() 等.5.2. JDBC23ResultSet對象常用方法next()方法: 把當前的指針向下移動一位。最初它位于第一行之前,因此第一次調用next將把指針置于第一行上,使它成為當前行。隨著每次調用next導致指針向下移動,按照從上至下的次序 獲取ResultSet行。5.2. JDBC24ResultSet結果集的取得ResultSe
15、t的使用 . . . ResultSet rst = stmt.executeQuery(Select * from User_Info);while (rst.next() System.out.println(rst.getString(userName);System.out.println(rst.getDate(regDate);System.out.println(rst.getString(4);System.out.println(rst.getInt(age); . . .5.2. JDBC255.3. 數據庫編程在Java程序中要操作數據庫,一般應該通過如下幾步:1)導入與
16、數據庫相關的類 import java.sql.*;2)加載數據庫驅動程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);3)建立數據庫連接 Connection conn = DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433; DatabaseName=db_library;“,”sa”,”); 4)創(chuàng)建Statement對象 Statement stmt = conn.createStatement(); 26Java程序中要操作
17、數據庫步驟:5)執(zhí)行查詢語句 ResultSet rs = stmt.executeQuery(SELECT id,name FROM student); 6)取值 while (rs.next() .7)關閉Stamtement stmt.close();8)關閉連接conn.close(); 見p195例子5.3. 數據庫編程27數據庫舉例import java.sql.*;public class DBDemo public static void main(String args) String strurl =jdbc:odbc:stu; Connection conn =null;
18、 Statement stmt =null; ResultSet rs=null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn=DriverManager.getConnection(strurl,null,null); stmt=conn.createStatement(); rs=stmt.executeQuery(select 姓名,年齡 from 學生); 5.3. 數據庫編程28 while (rs.next() System.out.println(學號:+rs.getString(1)+ 年齡:+rs.getInt(
19、2); catch (ClassNotFoundException e) e.printStackTrace(); catch(SQLException e) e.printStackTrace(); finally try if(stmt !=null) stmt.close(); if(conn !=null& !conn.isClosed() conn.close(); catch(SQLException e) e.printStackTrace(); 5.3. 數據庫編程數據庫舉例29處理帶參數的查詢在很多應用中,要查詢的內容或更新的內容是運行時由用戶輸入來確定的.此時,在編寫應用程
20、序時,就不能確定SQL語句中有些項的值.像這樣的查詢,Java提供了一個PreparedStatement對象來處理。PreparedStatement對象允許執(zhí)行帶參數的查詢,如:select * from student where 學號=?用Connection對象的PreparedStatement()方法來創(chuàng)建PreparedStatement對象。5.3. 數據庫編程30方法如下:String url=“jdbc:odbc:MydataSource”;Connection conn=DriverManager.getConnection(“url”,”la”,”1234”);Pre
21、paredStatement stat;String s=“select * from student where 學號=?”;stat=conn.prepareStatement(s);在執(zhí)行PreparedStaatement 對象之前,必須設置每個?參數的值??梢酝ㄟ^調用PreparedStatement對象的setXxx()方法來設置,如:stat.setString(1,textDept.getText();表示用textDept文本框中用戶輸入的內容來設置參數值。5.3. 數據庫編程處理帶參數的查詢31本實例運用前面介紹的知識能對圖書管理系統(tǒng)中的借閱進行管理,步驟如下 (1)功能設
22、計 (2)數據庫設計 (3)建立數據庫操作類: (4)設計圖書信息管理相關類 (5)設計借閱管理相關類 (6)設計圖書查詢類 (7)設計用戶信息管理相關類Java實用編程技術圖書借閱管理軟件實例32(1)功能設計33(2)數據庫設計34public class Dao protected static String dbClassName = com.microsoft.jdbc.sqlserver.SQLServerDriver;protected static String dbUrl = jdbc:microsoft:sqlserver:/localhost:1433; + Databa
23、seName=db_library;SelectMethod=Cursor useunicode=true;characterEncoding=GB18030 ;protected static String dbUser = sa;protected static String dbPwd = ;protected static String second = null;private static Connection conn = null;private Dao() System.out.println(dbUrl);try if (conn = null) Class.forName
24、(dbClassName).newInstance();conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);elsereturn; catch (Exception ee) ee.printStackTrace();(3)設計數據庫操作相關的類Dao.建立數據庫連接35public static int Insertbook(String ISBN,String typeId,String bookname,String writer,String translator,String publisher,Date date,Doub
25、le price) int i=0; try String sql=insert into tb_bookInfo(ISBN,typeId,bookname,writer,translator,publisher,date,price) values(+ISBN+,+typeId+,+bookname+,+writer+,+translator+,+publisher+,+date+,+price+);/System.out.println(sql); i=Dao.executeUpdate(sql); catch(Exception e) System.out.println(e.getMe
26、ssage(); Dao.close(); return i; Dao類中插入圖書信息的方法36class addBookActionListener implements ActionListener / 添加按鈕的單擊事件監(jiān)聽器public void actionPerformed(final ActionEvent e) / 訂書業(yè)務.String ISBNs=ISBN.getText().trim();String bookTypes=item.getId();String translators=translator.getText().trim();String bookNames
27、=bookName.getText().trim();String writers=writer.getText().trim();String publishers=(String)publisher.getSelectedItem();String pubDates=pubDate.getText().trim();String prices=price.getText().trim();int i=Dao.Insertbook(ISBNs,bookTypes, bookNames, writers, translators, publishers, java.sql.Date.valueOf(pubDates),Double.parseDouble(prices);if(i=1) JOptionPane.showMessageDialog(null, 添加成功); doDefaultCloseAction();(4)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銅仁職業(yè)技術學院《設計軟件應用》2023-2024學年第二學期期末試卷
- 浙江省溫州市蒼南縣2024-2025學年數學三下期末教學質量檢測試題含解析
- 四川省成都市達標名校2025年高三下學期第二次調研測試英語試題含解析
- 江西師范大學《醫(yī)學微生物學C》2023-2024學年第二學期期末試卷
- 齊魯師范學院《廣告市場調查》2023-2024學年第二學期期末試卷
- 割膠打膠施工方案
- 工程項目文件及信息管理要點
- 山東省威海市2024-2025學年高二上學期期末考試英語試題【含答案】
- 隔斷吊頂施工方案模板
- 廣西南寧市2024-2025學年高一上學期期末教學質量調研數學試卷
- GB/T 3403.2-2013塑料粉狀脲-甲醛和脲/三聚氰胺-甲醛模塑料(UF-和UF/MF-PMCs)第2部分:試樣制備和性能測定
- GB/T 21835-2008焊接鋼管尺寸及單位長度重量
- 知識管理控制程序
- 積極情緒的力量
- DSP原理及應用教程-第二章 DSP芯片結構和CPU外圍電路
- 手衛(wèi)生之七步洗手法課件
- 中共一大代表的不同人生路程及其啟
- 讀書書香校園課件
- 注塑報價表模版
- 電氣安全安全管理程序
- 銷盤摩擦磨損試驗機設計
評論
0/150
提交評論