版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java 數(shù)據(jù)庫技術異常數(shù)據(jù)流第1頁,共33頁。案例分析界面數(shù)據(jù)庫設計第2頁,共33頁。1、Java數(shù)據(jù)庫編程基礎1、 JDBC概述JDBC(Java DataBase Connection) 、Java數(shù)據(jù)庫連接。功能:是Sun公司在1996年提出的一項技術(工具包),主要用于進行Java數(shù)據(jù)庫程序開發(fā)。 該工具包使得Java編程人員可以連接到一個 數(shù)據(jù)庫,進而使用SQL 對數(shù)據(jù)庫進行查詢和更新操 作。 可以理解成是對查詢分析器的模擬實現(xiàn) 第3頁,共33頁。JDBC運行原理Java數(shù)據(jù)庫應用程序JDBC驅動程序管理器JDBC/ODBC橋接器ODBC驅動程序DB供應商提供的JDBC驅動程序DB
2、JDBC APIJDBC驅動程序 APISQL命令(SQL Server、Oracle)第4頁,共33頁。JDBC結構、JDBC與JDBC驅動程序的關系: JDBC=JDBC驅動程序管理器JDBC DriverAPI+供編程人員使用供數(shù)據(jù)庫廠商使用JDBCAPI+JDBC驅動程序實現(xiàn)實現(xiàn)java.sql包數(shù)據(jù)庫廠商提供第5頁,共33頁。java.Sql包功能類、接口(斜體)JDBCAPI執(zhí)行SQL語句對SQL語句進行封裝,并用此sql語句操作數(shù)據(jù)庫Java.sql. Connection Java.sql. StatementJava.sql. PreparedStatement驅動程序管理器
3、裝載和管理各個數(shù)據(jù)庫驅動Java.sql. DriverManager執(zhí)行sql語句的結果集將SQL語句的執(zhí)行結果封裝成象Java.sql. ResultSetJava.sql. ResultSetMetaData輔助類特殊數(shù)據(jù)類型包裝類、異常類Driever API供應商必須實現(xiàn)的驅動程序APIJava.sql. Driver Java.sql. DatabaseMetaData 第6頁,共33頁。JDBC 特點 用Java語言編寫的;可移植性好;能用于所有的數(shù)據(jù)庫JDBC 驅動程序類型 JDBC-ODBC橋接器和ODBC驅動程序SQL Server數(shù)據(jù)庫Java數(shù)據(jù)庫程序ODBCJDBCO
4、DBC橋接器不建議用,因為可移植性差 純Java編寫的JDBC網絡驅動程序SQL Server數(shù)據(jù)庫Java數(shù)據(jù)庫程序JDBC網絡驅動第7頁,共33頁。2、 java數(shù)據(jù)庫程序開發(fā)步驟步驟2: 加載和注冊JDBC-ODBC橋接驅動程序 調用class類的forname()方法加載數(shù)據(jù)庫JDBC驅動程序。例如: 步驟3:獲得數(shù)據(jù)庫連接 調用驅動程序管理器(DriverManager對象)的getConnection() 方法,返回Connection對象。 例如:Connection con = DriverManager.getConnection (“jdbc:odbc:數(shù)據(jù)源”,“用戶名”
5、,“密碼); 以JDBC-ODBC方式訪問數(shù)據(jù)庫步驟1: 準備工作:在ODBC數(shù)據(jù)源中設置數(shù)據(jù)源Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver);第8頁,共33頁。步驟2: 加載和注冊JDBC驅動程序 調用class類的forname()方法加載數(shù)據(jù)庫JDBC驅動程序。例如: 步驟3:獲得數(shù)據(jù)庫連接 調用驅動程序管理器(DriverManager對象)的getConnection() 方法,返回Connection對象。 例如:Connection con = DriverManager.getConnection (jdbc:microsoft:sql
6、server:/localhost:1433;DatabaseName=bookshop,“sa,“sa);以JDBC方式sqlserver步驟1: 準備工作:下載驅動程序,將SQL Server驅動程序包加入到項目classpath中Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);第9頁,共33頁。步驟4:獲得參數(shù)化執(zhí)行SQL語句的PreparedStatement對象 調用connect對象的prepareStatement(String sql)方法 。例如: String sql = “select * from
7、book where book_id=?”;PreparedStatement pst = conn. prepareStatement (sql); 步驟5: 參數(shù)幫定 調用PreparedStatement對象的setXXX(intparameterIndex, intx)方法邦定參數(shù)。 說明: 在JDBC中,對SQL的包裝有3種方式:java.sql.Statement 用于執(zhí)行不帶參數(shù)的簡單sql語句java.sql.PrepareStatement。用于執(zhí)行帶或不帶參數(shù)的預編譯sql語句java.sql.CallableStatement 。 用于執(zhí)行對數(shù)據(jù)庫的存儲過程的調用。推薦使
8、用java.sql.PrepareStatement,因為它的功能包含了java.sql.Statement,在打開狀態(tài)下可重復執(zhí)行多次,而且效率比較高。第10頁,共33頁。步驟6: 指定結果集的屬性Statement statement = conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE )第一個參數(shù)指定 ResultSet 的類型。其選項有:TYPE_FORWARD_ONLY:缺省類型。只允許向前訪問一次,并且不會受到其他用戶對該數(shù)據(jù)庫所作更改的影響。 TYPE_SCROLL
9、_INSENSITIVE:允許在列表中向前或向后移動,甚至可以進行特定定位,例如移至列表中的第四個記錄或者從當前位置向后移動兩個記錄。不會受到其他用戶對該數(shù)據(jù)庫所作更改的影響。 TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一樣,允許在記錄中定位。這種類型受到其他用戶所作更改的影響。如果用戶在執(zhí)行完查詢之后刪除一個記錄,那個記錄將從 ResultSet 中消失。類似的,對數(shù)據(jù)值的更改也將反映在 ResultSet 中。 第二個參數(shù)設置 ResultSet 的并發(fā)性,該參數(shù)確定是否可以更新 ResultSet。其選項有:CONCUR_READ_O
10、NLY:這是缺省值,指定不可以更新 ResultSet CONCUR_UPDATABLE:指定可以更新 ResultSet 第11頁,共33頁。步驟7: 處理查詢結果ResultSet rs = pst. executeQuery(); /查詢時Int i=pst. executeUpdate(sql); /增 刪 改while (rs.next() /用 rs.get(“列名”)獲得當前行的某列的值 /用 rs.get(int)獲得當前行的值 步驟8: 關閉連接,釋放資源pst.close();con.close();第12頁,共33頁。 步驟 從錯誤信息中找到,在代碼的哪一行出錯? 在此行
11、出了什么錯誤? 根據(jù)出錯信息改正此錯誤再次運行代碼,看此錯誤是否已經改掉(是否還報此錯誤?) JDBC 編程常見運行時錯誤的改正第13頁,共33頁。Java異常處理異常是指程序在運行時所發(fā)生的錯誤或者不正常的狀態(tài)。Java程序運行過程中所發(fā)生的異常事件可分為兩類:錯誤(Error):JVM系統(tǒng)內部錯誤、資源耗盡等嚴重情況違例(Exception): 其它因編程錯誤或偶然的外在因素導致的一般性問題,例如:對負數(shù)開平方根試圖讀取不存在的文件網絡連接中斷例題 第八章:Test1.java第14頁,共33頁。Java異常類層次第15頁,共33頁。常見異常RuntimeException 錯誤的類型轉換
12、數(shù)組下標越界空指針訪問IOExeption從一個不存在的文件中讀取數(shù)據(jù)越過文件結尾繼續(xù)讀取連接一個不存在的URL第16頁,共33頁。異常處理機制Java程序的執(zhí)行過程中如出現(xiàn)異常,會自動生成一個異常類對象,該異常對象將被提交給Java運行時系統(tǒng),這個過程稱為拋出(throw)異常。當Java運行時系統(tǒng)接收到異常對象時,會尋找能處理這一異常的代碼并把當前異常對象交給其處理,這一過程稱為捕獲(catch)異常。如果Java運行時系統(tǒng)找不到可以捕獲異常的方法,則運行時系統(tǒng)將終止,相應的Java程序也將退出。程序員通常只能處理違例(Exception),而對錯誤(Error)無能為力例題 第八章:Te
13、st2.java第17頁,共33頁。捕獲異常捕獲異常是通過try-catch-finally語句實現(xiàn)的。try./可能產生異常的代碼catch( ExceptionName1 e )./當產生ExceptionName1型異常時的處置措施catch( ExceptionName2 e ). /當產生ExceptionName2型異常時的處置措施 finally. /無條件執(zhí)行的語句 finally捕獲異常的最后一步是通過finally語句為異常處理提供一個統(tǒng)一的出口,使得在控制流轉到程序的其它部分以前,能夠對程序的狀態(tài)作統(tǒng)一的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語
14、句都會被執(zhí)行。finally語句是任選的第18頁,共33頁。捕獲異常當使用多個catch語句時,一定要注意先寫子類異常,再寫父類異常,當父類在前時,執(zhí)行到父類異常匹配后,就不在往下執(zhí)行。例題: 第八章: yichang5.java 第19頁,共33頁。聲明拋棄異常聲明拋棄異常是Java中處理異常的第二種方式如果一個方法(中的語句執(zhí)行時)可能生成某種異常,但是并不能確定如何處理這種異常,則此方法應聲明拋棄異常,表明該方法將不對這些異常進行處理,而由該方法的調用者負責處理聲明拋棄舉例:例題: 第八章: yichang6.java 第20頁,共33頁。人工拋出異常Java異常類對象除在程序執(zhí)行過程中
15、出現(xiàn)異常時由系統(tǒng)自動生成并拋出,也可根據(jù)需要人工創(chuàng)建并拋出首先要自定義異常類,通過繼承Throwable或其子類的Exception來實現(xiàn)。例題: 第八章: yichang9.java 第21頁,共33頁。文件程序終端文件程序網絡端點數(shù)據(jù)流起點終點 網絡端點文件,字符串存儲區(qū)數(shù)據(jù)流什么是數(shù)據(jù)流 ?數(shù)據(jù)流是一組有順序,有起點和終點的字符集合。在java中有關流的操作使用 io 包import java.io.*;第22頁,共33頁。流的分類流字節(jié)流字符流流輸入流輸出流按照處理數(shù)據(jù)的單位劃分按照輸入輸出方式劃分第23頁,共33頁。Java.io中的四個類:以字節(jié)為對象: 輸入流:InputStre
16、am 輸出流:OutputStream以字符為對象: 輸入流: Reader 輸出流: Writer字節(jié)流和字符流的比較字節(jié)流適用于各類文件每次讀寫8位字節(jié)效率較低字符流適用于16位的字符文件每次讀寫16位字符效率較高第24頁,共33頁。文件處理1、File類(1)所有對文件的操作都要使用File類.(2)其構造: File(“文件名”); File(“目錄名”,“文件名”);2、字符文件: FileReader類、 FileWriter類3、字節(jié)文件: FileInput類、FileOutput類定義在包java.io中第25頁,共33頁。2、操作字符文件的類FileReader 讀取文件;
17、FileWriter 寫入文件;BufferedReader 輸入到緩沖區(qū)。BufferedWriter 輸出到緩沖區(qū)。從輸入流中按行讀取字符的方法: String readLine();向輸出流寫入多個字符的方法: write(Strings, intoff, intlen); 將指定的字符串s從偏移量 off 開始的 len 個字符寫入文件輸出流。舉例: AddStudent.java第26頁,共33頁。保存文本文件 FileWriter fw=new FileWriter(b.txt); BufferedWriter bw=new BufferedWriter(fw);建立輸出通道 St
18、ring str=txt.getText(); bw.write(str,0,str.length(); bw.flush();完成寫的動作刷新緩沖區(qū)強制寫入第27頁,共33頁。文件對象的建立File fp=new File(“c:file1.dat”);FileInputStream類用來打開一個輸入文件FileOutputStream類用來打開一個輸出文件二進制文件的處理第28頁,共33頁。FileInputStream類的常用方法:read():從流中讀入數(shù)據(jù)close():關閉流FileOutputStream類的方法:write(byte b , int off, int len )
19、:在數(shù)組b中,從off開始,寫入len個字節(jié)的數(shù)據(jù)。b 數(shù)組Off開始,有 l en 個字節(jié)二進制文件的處理注意:二進制文件必須按字節(jié)讀取第29頁,共33頁。將一個文件內容復制到另一個文件中try File inFile=new File(“file1.dat); File outFile=new File( file2.dat); FileInputStream fis=new FileInputStream(inFile); FileInputStream fos=new FileOutputStream(outFile); int c; while(c=fis.read()!=-1) fos.write(c); fis.close(); fos.close();catch(FileNotFoundException e) catch(IOException ee) 第30頁,共33頁。文件目錄zip文件三、隨機存取文件類RandomAccessFile zip文件需要用隨機方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南醫(yī)學院《英語閱讀與思辨》2023-2024學年第一學期期末試卷
- 七年級語文上冊第二單元6散步教案新人教版
- 七年級道德與法治上冊第四單元生命的思考第八課探問生命第1課時誤區(qū)警示新人教版
- 三年級數(shù)學上冊7長方形和正方形第3課時周長導學案新人教版
- 三年級數(shù)學上冊第2單元兩三位數(shù)乘一位數(shù)2.8解決問題課時練冀教版
- 慢性胃炎培訓課件
- 《先芥蒂與麻醉》課件
- 人教版八年級物理下冊全冊教案
- 函數(shù)的圖象課件
- 涂料調色完整版本
- 安全生產事故案例分析
- 《電化學儲能系統(tǒng)艙大件運輸特殊要求》
- 2025年采購部工作計劃
- 期末檢測卷(一)(試卷)-2024-2025學年外研版(三起)英語六年級上冊(含答案含聽力原文無音頻)
- 《防范于心反詐于行》中小學防范電信網絡詐騙知識宣傳課件
- 2023-2024學年北京市通州區(qū)九年級(上)期末語文試卷
- 2023-2024學年廣東省深圳市龍崗區(qū)八年級(上)期末英語試卷
- DB23-T 3768-2024北方種鵝節(jié)水生態(tài)旱養(yǎng)管理技術規(guī)程
- 勘察工作質量及保證措施
- 事業(yè)單位招聘《綜合基礎知識》考試試題及答案
- 2024年電工(高級技師)考前必刷必練題庫500題(含真題、必會題)
評論
0/150
提交評論