Ch05-數(shù)據(jù)庫編程.ppt_第1頁
Ch05-數(shù)據(jù)庫編程.ppt_第2頁
Ch05-數(shù)據(jù)庫編程.ppt_第3頁
Ch05-數(shù)據(jù)庫編程.ppt_第4頁
Ch05-數(shù)據(jù)庫編程.ppt_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

概念:JDBC及驅(qū)動程序 數(shù)據(jù)庫:MS Access;MS Excel;JavaDB 數(shù)據(jù)庫連接(JDBC URL) 數(shù)據(jù)庫訪問(含SQL),本章目標,Ch05-數(shù)據(jù)庫,濟南大學(xué)信息科學(xué)與工程學(xué)院 制作人:喬善平,課程:Java程序設(shè)計 e-mail:ise_,主要的包、類及接口,java.sql DriverManager Connection Statement(PreparedStatement;CallableStatement) ResultSet DatabaseMetaData;ResultSetMetaData,濟南大學(xué)信息科學(xué)與工程學(xué)院 制作人:喬善平,課程:Java程序設(shè)計 e-mail:ise_,實例,使用JavaDB設(shè)計一個單選題數(shù)據(jù)庫 設(shè)計一個類,實現(xiàn)下列功能: 連接數(shù)據(jù)庫 隨機選擇n道題目 輸出題目內(nèi)容 考慮難度和分布選擇n道題目 練習(xí)對Excel的操作(student.xls) 練習(xí)對Access的操作(words.mdb),數(shù)據(jù)庫編程,概述 基本SQL語句 訪問數(shù)據(jù)庫 實例,本章基本要求,了解JDBC及其驅(qū)動程序的類型 熟悉基本的SQL語句 會訪問數(shù)據(jù)庫,概述,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,常用數(shù)據(jù)庫 Java DB MySQL Microsoft Access Microsoft SQL Server Oracle Sybase ,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,JDBC JDBC Java Database Connectivity JDBC的體系結(jié)構(gòu),濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,JDBC驅(qū)動程序的類型,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,import java.sql.*; import javax.sql.*; java.sql.SQLException,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,基于JDBC的數(shù)據(jù)庫訪問的基本步驟: 建立數(shù)據(jù)庫(含啟動服務(wù)器、設(shè)置數(shù)據(jù)源等) 加載JBDC驅(qū)動程序 獲得到數(shù)據(jù)庫的連接 創(chuàng)建執(zhí)行SQL語句的聲明 向數(shù)據(jù)庫發(fā)送并執(zhí)行SQL語句 處理執(zhí)行的結(jié)果 關(guān)閉連接,基本SQL語句,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,表操作 創(chuàng)建表 create table 表名(字段名1 數(shù)據(jù)類型1, ) create table 成績表(學(xué)號 integer, 姓名 char(20), 成績 double) 刪除表 drop table 表名 drop table 成績表,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,列操作 添加列 alter table 表名 add 字段名 數(shù)據(jù)類型 alter table 成績表 add 性別 char(2) 刪除列 alter table 表名 drop column 字段名 alter table 成績表 drop column 性別 修改列 alter table 表名 alter column 字段名 數(shù)據(jù)類型 alter table 成績表 alter column 姓名 char(30),濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,記錄操作 插入記錄 insert into 表名 values(值1,) insert into 成績表 VALUES(2008010441,王二 ,85) 刪除記錄 delete from 表名 where 條件表達式 delete from 成績表 where 姓名=王二 更新記錄 update 表名 set 字段名=值 where 條件表達式 update 成績表 set 姓名=王三 where 姓名=王二,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,查詢記錄 select語句 SELECT * FROM SCORE WHERE C180 SELECT * FROM stu ORDER BY 成績 SELECT * FROM stu WHERE 姓名 LIKE 張%,訪問數(shù)據(jù)庫,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,此處以訪問 Microsoft Access 數(shù)據(jù)庫為例進行講解,對其他類型數(shù)據(jù)庫的訪問類似。主要區(qū)別在于連接數(shù)據(jù)庫的方法。,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,創(chuàng)建數(shù)據(jù)庫并設(shè)置數(shù)據(jù)源 設(shè)計滿足系統(tǒng)需求的數(shù)據(jù)庫和相關(guān)表 完成基本數(shù)據(jù)的錄入,完成數(shù)據(jù)庫的建立 設(shè)置數(shù)據(jù)源(Windows XP下) 控制面板管理工具數(shù)據(jù)源(ODBC) 用戶DSN標簽添加選擇驅(qū)動程序完成 輸入數(shù)據(jù)源名選擇數(shù)據(jù)庫確定 /在此可使用高級按鈕設(shè)置登錄用戶和密碼,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,加載驅(qū)動程序類 Class.forName(“驅(qū)動程序類名”); JDBC-ODBC橋接器 在JDK中已經(jīng)提供 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 第4類JDBC Driver 需要下載相關(guān)的jar文檔 將jar文檔添加到開發(fā)環(huán)境中,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,獲得一個到數(shù)據(jù)庫的連接 JDBC URL 格式:jdbc: 例如 String urlstr = “jdbc:odbc:mydb”; String urlstr = “jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=path/mydb.mdb”;,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,獲得連接 Connection conn; conn = DriverManager.getConnection(urlstr); conn = DriverManager.getConnection (urlstr, user, pwd);,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,創(chuàng)建一個使用SQL語句的對象 Statement stmt; stmt = conn.createStatement(); stmt = conn.createStatement(int,int); int:結(jié)果集游標的滾動類型及對數(shù)據(jù)庫變化的反映 ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.TYPE_SCROLL_SENSITIVE int:是否能用結(jié)果集對數(shù)據(jù)庫進行更新 ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,執(zhí)行SQL語句并獲得結(jié)果 ResultSet rset; 查詢語句(SELECT) rset = stmt.executeQuery(SQL語句); 更新語句(INSERT、UPDATE、DELETE) int ret = stmt.executeUpdate(SQL語句);,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,處理結(jié)果 說明 ResultSet對象維護一個指向當前行的位置光標,初始在第1行前面,next()方法可下移,當沒有多余行時返回false ResultSet提供了一組get方法用于獲取當前行中各列值,按照left-to-right順序讀取,且每列只能讀取一次。列號從1開始,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,ResultSet接口提供以下操作結(jié)果集數(shù)據(jù)的方法 光標位置 boolean next(); boolean previous(); boolean first(); boolean last(); void beforeFirst(); void afterLast(); boolean absolute(int); boolean relative(int); boolean isBeforeFirst(); boolean isAfterLast(); boolean isFirst(); boolean isLast();,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,操作列數(shù)據(jù) boolean getBoolean(int/String) byte getByte(int/String) short getShort(int/String) int getInt(int/String) long getLong(int/String) float getFloat(int/String) double getDouble(int/String) String getString(int/String) Time getTime(int/String) Date getDate(int/String) Object getObject(int/String) int findColumn(String columnName),濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,操作行數(shù)據(jù) rs.absolute(5); rs.updateString(“NAME“, “Zhansan“); rs.updateRow(); rs.moveToInsertRow(); rs.updateString(1, “Zhansan“); rs.updateInt(2, 35); rs.updateBoolean(3, true); rs.insertRow(); rs.moveToCurrentRow();,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,關(guān)閉連接 rset.close(); stmt.close(); conn.close();,實例,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,問題描述(Example11_Word.java) 設(shè)已存在一個Access數(shù)據(jù)庫words.mdb,其中有一個表words,表結(jié)構(gòu)如下: 設(shè)計一個數(shù)據(jù)庫程序,完成英漢查詢的功能。即輸入一個英文單詞,顯示出查詢結(jié)果,本章問題小結(jié),JDBC的含義與作用是什么? 數(shù)據(jù)庫編程一般需要導(dǎo)入什么包和處理什么異常? 如何設(shè)置ODBC的DSN? 如何加載數(shù)據(jù)庫驅(qū)動程序? 如何獲得到一個數(shù)據(jù)庫的連接(Connection)? 如何獲得一個使用SQL語句的對象(Statement)? 如何執(zhí)行SQL語句? 如何處理處理結(jié)果(ResultSet)? 如何關(guān)閉連接? 會使用基本的SQL語句。,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,作業(yè),什么是JDBC? 說說使用JDBC訪問數(shù)據(jù)庫的基本步驟。,其它內(nèi)容,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,SQL99的主要數(shù)據(jù)類型,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,Class.forName(“com.mysql.jdbc.Driver“); Connection conn = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/DBname“, “, “); Class.forName(“org.apache.derby.jdbc.ClientDriver“); Connection conn = DriverManager.getConnection(“jdbc:derby:/localhost:1527/DBname“, “, “); Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); Connection conn = DriverManager.getConnection(“jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=e:/qsp.mdb“, “, “); Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“); Connection conn = DriverManager.getConnection( “jdbc:microsoft:sqlserver:/localhost:1433;databaseName=master“, “, “);,濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,Connection的主要方法 void commit() void rollback() DatabaseMetaData getMetaData() Statement createStatement() Statement createStatement(int, int) PreparedStatement prepareStatement(String) CallableStatement prepareCall(String) void close(),濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,Statement的主要方法 ResultSet executeQuery(String sql) int executeUpdate(sql) boolean execute(sql) ResultSet getResultSet() int getUpdateCount() Connection getConnection() void close() void clearBatch() void addBatch(String sql) int executeBatch(),濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,元數(shù)據(jù) DatabaseMetaData 用于獲取描述數(shù)據(jù)庫的元數(shù)據(jù) ResultSetMetaData 用于獲取描述表的元數(shù)據(jù),濟南大學(xué)信息科學(xué)與工程學(xué)院 - 2011,PreparedStatement( extends Statement ) PreparedStatement ps = conn.pre

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論