第10章數(shù)據(jù)庫應(yīng)用_第1頁
第10章數(shù)據(jù)庫應(yīng)用_第2頁
第10章數(shù)據(jù)庫應(yīng)用_第3頁
第10章數(shù)據(jù)庫應(yīng)用_第4頁
第10章數(shù)據(jù)庫應(yīng)用_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java程序設(shè)計實用教程(第4版)第第10章章 數(shù)據(jù)庫應(yīng)用數(shù)據(jù)庫應(yīng)用 10.3 JDBCJava程序設(shè)計實用教程(第4版)10.3 JDBC1.10.3.1 JDBC的作用和功能的作用和功能2.10.3.2 指定指定JDBC驅(qū)動程序驅(qū)動程序3.10.3.3 連接數(shù)據(jù)庫連接數(shù)據(jù)庫4.10.3.4 執(zhí)行執(zhí)行SQL語句語句5.10.3.5 處理數(shù)據(jù)查詢的結(jié)果集處理數(shù)據(jù)查詢的結(jié)果集注意:注意:導(dǎo)入導(dǎo)入MySQL JDBC驅(qū)動程序包驅(qū)動程序包.MySQLConnector Jmysql-connector-java-*-bin.jarJava程序設(shè)計實用教程(第4版)10.3.1 JDBC的作用和功能的

2、作用和功能1.什么是什么是JDBCJDBC(Java DataBase Connectivity,Java數(shù)據(jù)庫連接)是基于數(shù)據(jù)庫連接)是基于Java的、用于訪問的、用于訪問關(guān)系數(shù)據(jù)庫的應(yīng)用程序編程接口。關(guān)系數(shù)據(jù)庫的應(yīng)用程序編程接口。Java程序設(shè)計實用教程(第4版)圖圖10.8 JDBC驅(qū)動程序類型及其驅(qū)動程序類型及其工作原理工作原理 Java程序設(shè)計實用教程(第4版)JDBC的基本功能、組成和工作原理的基本功能、組成和工作原理/MySQLClass.forName(com.mysql.jdbc.Driver); /指定MySQL JDBC驅(qū)動程序String url = jdbc:mysq

3、l:/localhost/student?user=root&password=1234;Connection conn = DriverManager.getConnection(url); /連接url指定數(shù)據(jù)庫DatabaseMetaData dbmd = conn.getMetaData(); /獲得所連接數(shù)據(jù)庫的屬性信息Statement stmt = conn.createStatement(); /創(chuàng)建執(zhí)行SQL語句的Statement對象String sql=INSERT INTO stuinfo(stu_id, stu_name)+ VALUES(1022010010

4、,李偉強);int count = stmt.executeUpdate(sql); /執(zhí)行執(zhí)行SQL語句,返回執(zhí)行成功影響的行數(shù)語句,返回執(zhí)行成功影響的行數(shù)stmt.close(); conn.close(); /關(guān)閉數(shù)據(jù)庫連接Java程序設(shè)計實用教程(第4版)10.3.2 指定指定JDBC驅(qū)動程序驅(qū)動程序1.選擇和安裝選擇和安裝JDBC驅(qū)動程序驅(qū)動程序2.MyEclipse添加添加MySQL JDBC驅(qū)動程序包驅(qū)動程序包3.在應(yīng)用程序中指定在應(yīng)用程序中指定JDBC驅(qū)動程序驅(qū)動程序public static Class forName(String className) throws Cla

5、ssNotFoundException例如,例如,Class.forName(“sun.jdbc.odbc.JdbcOdcDriver”);Class.forName(com.mysql.jdbc.Driver); Java程序設(shè)計實用教程(第4版)10.3.3 連接數(shù)據(jù)庫連接數(shù)據(jù)庫1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫連接類創(chuàng)建與指定數(shù)據(jù)庫連接public class DriverManager public static Connection getConnection(String url) throws SQLException Connection conn = Drive

6、rManager.getConnection(jdbc:odbc:student_access);Connection conn=DriverManager.getConnection(jdbc:mysql:/localhost/student?user=root&password=);Java程序設(shè)計實用教程(第4版)2. Connection接口管理連接對象接口管理連接對象public interface Connection Statement createStatement() throws SQLException; /創(chuàng)建執(zhí)行創(chuàng)建執(zhí)行SQL的語句對象的語句對象 Statem

7、ent createStatement(int resultSetType, int resultSetConcurrency) throws SQLException; /參數(shù)指定結(jié)果集屬性參數(shù)指定結(jié)果集屬性 void close() throws SQLException; /關(guān)閉數(shù)據(jù)庫連接關(guān)閉數(shù)據(jù)庫連接 boolean isClosed() throws SQLException; /判斷數(shù)據(jù)庫連接是否已關(guān)閉判斷數(shù)據(jù)庫連接是否已關(guān)閉 DatabaseMetaData getMetaData() throws SQLException; /獲取所連接數(shù)據(jù)庫的元數(shù)據(jù)獲取所連接數(shù)據(jù)庫的元數(shù)據(jù)J

8、ava程序設(shè)計實用教程(第4版)3. DatabaseMetaData接口獲得接口獲得數(shù)據(jù)庫元數(shù)據(jù)數(shù)據(jù)庫元數(shù)據(jù)public interface DatabaseMetaData String getURL() throws SQLException; /返回連接數(shù)據(jù)庫的返回連接數(shù)據(jù)庫的URL String getUserName() throws SQLException; /返回數(shù)據(jù)庫的用戶名返回數(shù)據(jù)庫的用戶名 String getDatabaseProductName() throws SQLException;/返回數(shù)據(jù)庫名稱返回數(shù)據(jù)庫名稱 String getDatabaseProdu

9、ctVersion() throws SQLException; /返回數(shù)據(jù)庫版本號返回數(shù)據(jù)庫版本號 String getDriverName() throws SQLException; /返回驅(qū)動程序名稱返回驅(qū)動程序名稱 String getDriverVersion() throws SQLException;/返回驅(qū)動程序版本號返回驅(qū)動程序版本號【例例10.1】 連接指定數(shù)據(jù)庫并獲得數(shù)據(jù)庫屬性信息。連接指定數(shù)據(jù)庫并獲得數(shù)據(jù)庫屬性信息。Java程序設(shè)計實用教程(第4版)10.3.4 執(zhí)行執(zhí)行SQL語句語句public interface Statement int executeUpda

10、te(String sql) throws SQLException; /執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語句語句 ResultSet executeQuery(String sql) throws SQLException;/執(zhí)行數(shù)據(jù)查詢執(zhí)行數(shù)據(jù)查詢SQL語句語句 boolean execute(String sql) throws SQLException; /執(zhí)行執(zhí)行SQL語句語句 int getUpdateCount() throws SQLException; /獲得數(shù)據(jù)更新所影響的行數(shù)獲得數(shù)據(jù)更新所影響的行數(shù) ResultSet getResultSet() th

11、rows SQLException; /獲得數(shù)據(jù)查詢結(jié)果集獲得數(shù)據(jù)查詢結(jié)果集 void close() throws SQLException; /關(guān)閉語句關(guān)閉語句Java程序設(shè)計實用教程(第4版)10.3.4 執(zhí)行執(zhí)行SQL語句語句1.執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語句語句Statement stmt = conn.createStatement(); String sql = INSERT INTO stuinfo (stu_id, stu_name) VALUES (98101041, 李偉李偉);int result = stmt.executeUpdate(sql

12、); /返回影響的行數(shù)返回影響的行數(shù)2.執(zhí)行數(shù)據(jù)查詢執(zhí)行數(shù)據(jù)查詢SQL語句語句String sql = SELECT * FROM stuinfo ; ResultSet rset = stmt.executeQuery(sql);3.執(zhí)行執(zhí)行SQL語句語句調(diào)用調(diào)用execute()方法執(zhí)行方法執(zhí)行SQL語句;語句;調(diào)用調(diào)用getResultSet()方法獲得數(shù)據(jù)查詢結(jié)果集方法獲得數(shù)據(jù)查詢結(jié)果集調(diào)用調(diào)用getUpdateCount()方法獲得數(shù)據(jù)更新所影響的行數(shù)。方法獲得數(shù)據(jù)更新所影響的行數(shù)。Java程序設(shè)計實用教程(第4版)10.3.5 處理數(shù)據(jù)查詢的結(jié)果集處理數(shù)據(jù)查詢的結(jié)果集1.Resul

13、tSet接口存儲結(jié)果集接口存儲結(jié)果集當(dāng)前行當(dāng)前行int getRow() throws SQLException; /當(dāng)前行位置當(dāng)前行位置boolean previous() throws SQLException; boolean next() throws SQLException; /向下一行向下一行void beforeFirst() throws SQLException;例如,例如,int rows=0;while(rset.next() rows+; /獲得結(jié)果集總行數(shù)獲得結(jié)果集總行數(shù)beforeFirst();Java程序設(shè)計實用教程(第4版)(2) 獲得當(dāng)前行指定列的數(shù)據(jù)項值

14、獲得當(dāng)前行指定列的數(shù)據(jù)項值Object getObject(int columnIndex) throws SQLException;Object getObject(String columnName) throws SQLException;String getString(int columnIndex) throws SQLException;String getString(String columnName) throws SQLException;例如:例如: while(rset.next() System.out.println(rset.getString(1); Java

15、程序設(shè)計實用教程(第4版)2. ResultSetMetaData接口接口從結(jié)果集中獲得元數(shù)據(jù)從結(jié)果集中獲得元數(shù)據(jù)public interface ResultSetMetaData int getColumnCount() throws SQLException; /返回列數(shù)返回列數(shù) String getColumnName(int column) throws SQLException; /返回列名返回列名 String getColumnTypeName(int column) throws SQLException; /返回列數(shù)據(jù)類型名返回列數(shù)據(jù)類型名 int getColumnDis

16、playSize(int column) throws SQLException; /返回列所占的最大字符寬度返回列所占的最大字符寬度ResultSetMetaData rsmd = resultset.getMetaData(); int columnCount = rsmd.getColumnCount(); /獲得列數(shù)獲得列數(shù)【例例10.2】 使用使用JTable顯示數(shù)據(jù)查詢的結(jié)果集。顯示數(shù)據(jù)查詢的結(jié)果集。 Java程序設(shè)計實用教程(第4版)3. 通過通過ResultSet結(jié)果集更新表結(jié)果集更新表 Statement createStatement(int resultSetType,

17、int resultSetConcurrency) throws SQLException;例如:例如:Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);Java程序設(shè)計實用教程(第4版)ResultSet接口支持數(shù)據(jù)敏感接口支持數(shù)據(jù)敏感和和可更新功能的方法可更新功能的方法void updateRow() throws SQLException;void insertRow() throws SQLException;void deleteRow() throws SQLException; 10.3.6 關(guān)閉數(shù)據(jù)庫鏈接關(guān)閉數(shù)據(jù)庫鏈接conn.close();Java程序設(shè)計實用教程(第4版)Java程序設(shè)計實用教程(第4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論