




已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java數(shù)據(jù)庫(kù)編程接口 JDBC,教材第9章,JDBC概述,ODBC(Open DataBase Connectivity) 微軟制定的一個(gè)C語(yǔ)言與數(shù)據(jù)庫(kù)的統(tǒng)一接口 JDBC(Java DataBase Connectivity) 為Java語(yǔ)言定義的一個(gè)SQL調(diào)用級(jí)接口。 為訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)提供了一個(gè)標(biāo)準(zhǔn)接口。,JDBC概述,Java application,JDBC Driver Manager,JDBC API,JDBC Driver (數(shù)據(jù)庫(kù)廠家提供),JDBC Driver API,DBMS,數(shù)據(jù)庫(kù)連接,每個(gè)JDBC應(yīng)用程序至少要有一個(gè)JDBC驅(qū)動(dòng)程序版本,JDBC驅(qū)動(dòng)程序是Driver接口類的實(shí)現(xiàn)。 Driver類是驅(qū)動(dòng)程序廠家實(shí)現(xiàn)的接口,Driver使DriverManager和JDBC應(yīng)用程序?qū)涌梢元?dú)立于具體的數(shù)據(jù)庫(kù)系統(tǒng)。,應(yīng)用程序,JDBC,Oracle 驅(qū)動(dòng)程序,MySQL 驅(qū)動(dòng)程序,JDBC API(類),java.sql.DriveManager 負(fù)責(zé)裝載、拆除驅(qū)動(dòng)程序,負(fù)責(zé)連接驅(qū)動(dòng)程序。 java.sql.Connection 實(shí)現(xiàn)對(duì)某一數(shù)據(jù)庫(kù)的連接功能(建立連接)。 java.sql.Statement 在一個(gè)給定的連接中作為執(zhí)行SQL語(yǔ)句的容器。 java.sql.PreparedStatement 用于執(zhí)行預(yù)編譯的SQL聲明 java.sql.CallableStatement 用于執(zhí)行數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程的調(diào)用 java.sql.ResultSet 保存SQL語(yǔ)句執(zhí)行結(jié)果,數(shù)據(jù)庫(kù)連接例(Oracle),Oracle安裝后,設(shè)置classpath,例如: CLASSPATHc:oracleora92jdbclibojdbc14.jar 注冊(cè)(裝入)oracle jdbc驅(qū)動(dòng)程序 語(yǔ)法:DriverManager.registerDriver(Driver driver) 例:DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver(); 建立連接(到指定數(shù)據(jù)庫(kù)) Connection con = DriverManager.getConnection (“jdbc:oracle:thin:166.111.7.248:1521:o8i2“, “scott“, “tiger“); 該方法將挑選一個(gè)合適的已注冊(cè)的JDBC驅(qū)動(dòng)程序,執(zhí)行sql語(yǔ)句Statement類,建立Statement類對(duì)象(sql容器) Statement stmt = conn.createStatement(); 查詢: ResultSet rs = stmt.executeQuery(“select ename,age from emp“); 修改: int count = stmt.executeUpdate(“update emp set age = 30 where ename=MARTIN “) INSERT, UPDATE or DELETE (返回行數(shù)) DDL 語(yǔ)句(返回0),ResultSet類的方法,移動(dòng)指針 boolean rs.next() ; 取結(jié)果集當(dāng)前行的數(shù)據(jù): 語(yǔ)法:getXXX(列序號(hào)或列名) /方法名的重載 String rs.getString(“ename“) ; int rs.getInt (“age“) ; 或 int rs.getInt (2) ;,訪問(wèn)數(shù)據(jù)庫(kù)例,import java.sql.* ; class Test public static void main (String args) throws SQLException DriverManager.registerDriver(new oracle.jdbc.OracleDriver(); Connection con = DriverManager.getConnection ( “jdbc:oracle:thin:166.111.7.248:1521:o8i2“, “帳號(hào)“ , “密碼“); Statement stmt=con.createStatement(); /創(chuàng)建Statement對(duì)象 System.out.println(“-查詢并顯示所有系的學(xué)生-“); ResultSet rs=stmt.executeQuery(“SELECT * FROM student order by birthday“); while(rs.next() /顯示查詢結(jié)果 System.out.print(rs.getString(“sno“) + “ “); System.out.print(rs.getString(“sname“) + “ “); System.out.print(rs.getString(“sex“) + “ “);,9-1,訪問(wèn)數(shù)據(jù)庫(kù)例,System.out.print(rs.getDate(“birthday“) + “ “); System.out.println(rs.getString(“dno“) + “ “); ; System.out.println(“-統(tǒng)計(jì)并顯示各系學(xué)生數(shù)-“); rs=stmt.executeQuery(“SELECT dno,count(*) as num FROM student group by dno“); while(rs.next() /顯示查詢結(jié)果 System.out.print(rs.getString(“dno“) + “ “); System.out.println(rs.getInt(“num“) + “ “); ; System.out.println(“-插入一個(gè)學(xué)生記錄:-“); String s = “ INSERT INTO student VALUES(s00000, 林時(shí), 男 , 21-4月-1990 , d01) “ ; stmt.executeUpdate(s); /添加一條記錄,訪問(wèn)數(shù)據(jù)庫(kù)例,System.out.println(“-查詢d01系的學(xué)生:-“); rs=stmt.executeQuery(“SELECT * FROM student WHERE dno=d01 “); /查詢 while(rs.next() /顯示 System.out.print(rs.getString(“sno“) + “ “); System.out.println(rs.getString(“sname“) + “ “); ; System.out.println(“-刪除一個(gè)學(xué)生記錄-“); stmt.executeUpdate(“ DELETE FROM student WHERE sname=林時(shí) “); System.out.println(“-刪除記錄后,查詢d01系的學(xué)生-“); rs=stmt.executeQuery(“SELECT sno,sname FROM student WHERE dno=d01 “); /查詢表格,訪問(wèn)數(shù)據(jù)庫(kù)例,while(rs.next() /顯示查詢結(jié)果 System.out.print(rs.getString(“sno“) + “ “); System.out.println(rs.getString(“sname“) + “ “); ; stmt.close(); /關(guān)閉語(yǔ)句 con.close(); /關(guān)閉連接 /main() ,9-1,PreparedStatement類,予編譯(反復(fù)執(zhí)行效率高),帶參數(shù) PreparedStatement ps = conn. preparedStatement( “update emp set sal=sal+? where eno=? “) ; ps.setFloat(1, 210.00) ps.setInt(2, 110592) ps.executeQuery(); ps.executeUpdate() ;,CallableStatement類,執(zhí)行存儲(chǔ)過(guò)程 CallableStatement cs = conn.prepareCall(“ call 過(guò)程名 “); cs. executeQuery(); ps.execUpdate() ;,JDBC API 層次,驅(qū)動(dòng)程序管理器,驅(qū)動(dòng)程序,連接,語(yǔ)句,預(yù)處理語(yǔ)句,可調(diào)用語(yǔ)句,結(jié)果集,結(jié)果集,結(jié)果集,驅(qū)動(dòng)程序?qū)?應(yīng)用程序?qū)?JDBC應(yīng)用,java ap
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 毛里求斯協(xié)議書(shū)
- 創(chuàng)設(shè)和諧教育環(huán)境的學(xué)校幼兒園教研計(jì)劃
- 道路通行協(xié)議書(shū)模板
- 車房裝修協(xié)議書(shū)范本
- 民宿包場(chǎng)協(xié)議書(shū)
- 河里取土協(xié)議書(shū)
- 演員合同協(xié)議書(shū)
- 業(yè)務(wù)承攬合同與業(yè)務(wù)行為規(guī)范承諾書(shū)
- 鄉(xiāng)村集體經(jīng)濟(jì)合作協(xié)議
- 建筑業(yè)農(nóng)民工勞動(dòng)合同書(shū)
- 心力衰竭試題及答案
- 公安治安管理培訓(xùn)
- 平面向量及其應(yīng)用 章末題型歸納總結(jié)(基礎(chǔ)篇)(10大題型)原卷版-2024-2025學(xué)年高一數(shù)學(xué)(人教A版必修第二冊(cè))
- 債權(quán)管理制度
- 運(yùn)動(dòng)營(yíng)養(yǎng)學(xué)知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春黑龍江冰雪體育職業(yè)學(xué)院
- 2025高級(jí)插花花藝師核心備考試題庫(kù)及答案(濃縮300題)
- 光伏發(fā)電站施工規(guī)范完整版2025年
- 煤礦防洪專項(xiàng)應(yīng)急預(yù)案
- 2025年陜西省初中學(xué)業(yè)水平考試英語(yǔ) 例析與指導(dǎo) 試卷示例題
- 汽輪機(jī)保護(hù)裝置原理與應(yīng)用考核試卷
- 2025年春季學(xué)期 形勢(shì)與政策 第四講 厚植綠色底色 建設(shè)美麗中國(guó)講義
評(píng)論
0/150
提交評(píng)論