




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java語言程序設計,第10章 Java數據庫連接,主講:張思民,仰恩大學Java課程組,圖15.1 學生數據庫的組成及相關名詞,10.1 建立ODBC數據源,理解ODBC數據源,圖15.3 ODBC數據源管理器對話框,圖15.7 安裝完成后的“ODBC數據源管理器”對話框,10.2 使用JDBC連接數據庫,JDBC(Java DataBase Connectivity的縮寫),意思是Java程序連接數據庫的應用程序接口(API)。 JDBC由一群類和接口組成,通過調用這些類和接口所提供的成員方法,我們可以連接各種不同的數據庫,進而使用標準的SQL命令對數據庫進行查詢、插入、刪除、更新等操作。
2、,10.2.1 JDBC結構,JDBC的基本結構由Java程序、JDBC管理器、驅動程序和數據庫四部分組成,如圖所示。,圖 JDBC結構,數據庫,ODBC,JDBC,橋接器,Java 應用程序,1Java應用程序 Java應用程序根據JDBC方法實現(xiàn)對數據庫的訪問和操作。完成的主要任務有:請求與數據庫建立連接;向數據庫發(fā)送SQL請求;查詢結果;處理錯誤;控制傳輸、提交及關閉連接等操作。,2、 JDBC編程要點 (1)引用java.sql包: import java.sql.*; (2) 使用Class.forName( )方法加載相應數據庫的JDBC驅動程序: class.forName(su
3、n.jdbc.odbc.JdbcOdbcDriver);,(3) 定義JDBC的URL對象。例如: String conURL=jdbc:odbc:TestDB; 其中TestDB是我們設置的數據源。 (4) 連接數據庫。 Connection s=DriverManager.getConnection(conURL);,(5) 使用SQL語句對數據庫進行操作。 (6) 解除Java與數據庫的連接并關閉數據庫。例如: s.close( );,10.3 JDBC編程實例,10.3.1 創(chuàng)建數據表 【示例程序1】 創(chuàng)建學生表student。此表有三個字段:學號(id)、姓名(name)及成績(sc
4、ore)。 import java.sql.*; /引入java.sql包 public class c1 public static void main(String args) String JDriver = sun.jdbc.odbc.JdbcOdbcDriver; /聲明JDBC驅動程序對象 String conURL=jdbc:odbc:TestDB; /定義JDBC的URL對象 try Class.forName(JDriver); /加載JDBC-ODBC橋驅動程序 ,catch(java.lang.ClassNotFoundException e) System.out.pr
5、intln(ForName : + e.getMessage( ); try Connection con=DriverManager.getConnection(conURL); /連接數據庫URL Statement s=con.createStatement( ); /建立Statement類對象 String query = create table student ( + id char(10), + name char(15), + score integer + ); /創(chuàng)建一個含有三個字段的學生表student s.executeUpdate(query); /執(zhí)行SQL命令,
6、s.close( ); /釋放Statement所連接的數據庫及JDBC資源 con.close( ); /關閉與數據庫的連線 catch(SQLException e) System.out.println(SQLException: +e.getMessage( ); ,其中, create table student(id char(10),name char(15),score integer); 這個SQL語句表示建立一個名為student的表,包含id(字符型,寬度為10)、name(字符型,寬度為15)與 score(數字型)三個字段。 這段程序的操作結果是創(chuàng)建了一個數據庫中st
7、udent表的結構,表中還沒有任何記錄。,10.3.2 向數據表中插入數據 【示例程序2】 在上例創(chuàng)建的數據表student中插入三個學生的記錄。 import java.sql.*; public class c2 public static void main(String args) String JDriver = sun.jdbc.odbc.JdbcOdbcDriver; String conURL=jdbc:odbc:TestDB; try Class.forName(JDriver); ,catch(java.lang.ClassNotFoundException e) Syst
8、em.out.println(ForName : + e.getMessage( ); try Connection con=DriverManager.getConnection(conURL); Statement s=con.createStatement( ); String r1=insert into student values(+0001,王明,80); String r2=insert into student values(+0002,高強,94); String r3=insert into student values(+0003,李莉,82); /使用SQL 命令in
9、sert插入三條學生記錄到表中 s.executeUpdate(r1);,s.executeUpdate(r2); s.executeUpdate(r3); s.close( ); con.close( ); catch(SQLException e) System.out.println(SQLException: +e.getMessage( ); ,圖 程序2的運行結果,10.3.3 更新數據 【示例程序3.java】 修改上例數據表中的第二條和第三條記錄的學生成績字段值,并把修改后的數據表的內容輸出到屏幕上。 import java.sql.*; public class c3 pub
10、lic static void main(String args) String JDriver=sun.jdbc.odbc.JdbcOdbcDriver; String conURL=jdbc:odbc:TestDB; String id=0002,0003; int score=89,60;,try Class.forName(JDriver); catch(java.lang.ClassNotFoundException e) System.out.println(ForName : + e.getMessage( ); try Connection con=DriverManager.
11、getConnection(conURL); /修改數據庫中數據表的內容 PreparedStatement ps=con.prepareStatement( UPDATE student set score=? where id=? ); int i=0,idlen=id.length;,do ps.setInt(1,scorei); ps.setString(2,idi); ps.executeUpdate( );/執(zhí)行SQL修改命令 +i; while(iid.length); ps.close( ); /查詢數據庫并把數據表的內容輸出到屏幕上 Statement s=con.creat
12、eStatement( ); ResultSet rs=s.executeQuery(select * from student); while(rs.next( ) System.out.println(rs.getString(id) + t + rs.getString(name)+ t + rs.getInt(score);, s.close( ); con.close( ); catch(SQLException e) System.out.println(SQLException: +e.getMessage( ); ,在這個程序中使用了PreparedStatement類,它提供
13、了一系列的set方法來設定位置。請注意程序中PreparedStatement( )方法中的參數“?”。程序中的語句: PreparedStatement ps=con.prepareStatement(UPDATE student set score=? where id=? ); ps.setInt(1,scorei); /將scorei的值作為SQL語句中第一個問號所代表參數的值 ps.executeUpdate( );,其中UPDATE student set score=? where id=? 這個SQL語句中各字段的值并沒指定,而是以“?”表示。程序必須在執(zhí)行ps.execute
14、Update( )語句之前指定各個問號位置的字段值。例如,用ps.setInt(1,scorei)語句中的參數1指出這里的scorei的值是SQL語句中第一個問號位置的值。當前面兩條語句執(zhí)行完后,才可執(zhí)行ps.executeUpdate( )語句,完成對一條記錄的修改。,程序中用到的查詢數據庫并把數據表的內容輸出到屏幕的語句是: ResultSet rs=s.executeQuery(select * from student); while(rs.next( ) System.out.println(rs.getString(id) + t + rs.getString(name)+ t +
15、 rs.getInt(score); ,其中,executeQuery( )返回一個ResultSet類的對象rs,代表執(zhí)行SQL查詢語句后所得到的結果集,之后再在while循環(huán)中使用對象rs的next( )方法將返回的結果一條一條地取出,直到next( )為false。 運行結果如下: 0001 王明 80 0002 高強 89 0003 李莉 60,10.3.4 刪除記錄 【示例程序4.java】 刪除表中第二條記錄,然后把數據表的內容輸出。 import java.sql.*; public class c4 public static void main(String args) St
16、ring JDriver=sun.jdbc.odbc.JdbcOdbcDriver; String conURL=jdbc:odbc:TestDB; try Class.forName(JDriver); ,catch(java.lang.ClassNotFoundException e) System.out.println(ForName : + e.getMessage( ); try Connection con=DriverManager.getConnection(conURL); Statement s=con.createStatement( ); /刪除第二條記錄 Prepa
17、redStatement ps=con.prepareStatement( delete from student where id=?); ps.setString(1,0002); ps.executeUpdate( ); /執(zhí)行刪除 /查詢數據庫并把數據表的內容輸出到屏幕上,ResultSet rs=s.executeQuery(select * from student); while(rs.next( ) System.out.println(rs.getString(id)+t+ rs.getString(name)+t + rs.getString(score); s.close
18、( ); con.close( ); catch(SQLException e) System.out.println(SQLException: +e.getMessage( ); ,數據庫驅動程序連接數據庫,1、下載數據庫驅動程序 2、連接URL,連接Access數據庫,String conURL=jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb); +DBQ=TestDB.mdb; Connection Ex1Con=DriverManager.getConnection(conURL); 【見P116 例10-5】,連接SQL Server數據庫,【見P325 例10-8】,連接 Oracle 數據庫,Class.forName(“oracle.jdbc.OracleDriv
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于古今醫(yī)案數據分析的胃痛病證治規(guī)律研究
- 基于冷卻塔運行參數的制冷機房系統(tǒng)高效運行研究
- 肺癌四年患者診療全病程病例分享
- 腦梗塞的護理健康宣教
- 科技助力近視防控:守護兒童青少年眼健康
- 雨雪天氣滅火救援安全教育
- 健康每日飲食管理指南
- 藥店培訓人員管理
- 《網頁設計與制作》課件-第2章Fireworks入門
- 預防消防安全課件
- 集中式太陽能熱水系統(tǒng)在工程中的應用附動畫
- 民間非營利組織資產管理制度
- 涉密人員涉密資格審查表
- GB/T 3332-2004紙漿打漿度的測定(肖伯爾-瑞格勒法)
- GB/T 10326-2016定形耐火制品尺寸、外觀及斷面的檢查方法
- 2023年鄭州發(fā)展投資集團有限公司招聘筆試模擬試題及答案解析
- 精神科醫(yī)師晉升副主任(主任)醫(yī)師病例分析專題報告(雙相障礙診治)
- 設備調撥單表格
- 樣品簽收記錄表
- 中醫(yī)治療知情同意書實用
- 湖北省2019年考試錄用公務員全省法官助理職位資格復審公告
評論
0/150
提交評論