版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Java面向對象
程序設計基礎教程河南大學計算機與信息工程學院目錄第1章Java語言概述第2章Java基本語法規(guī)則第3章Java中的面向對象技術第4章Java基本結構程序第5章Java基本類第6章圖形用戶界面第7章異常處理第8章多線程第9章JavaApplet程序第10章輸入輸出流與文件處理第11章Java網(wǎng)絡編程第12章數(shù)據(jù)庫應用3
數(shù)據(jù)庫技術有效地管理和存取大量的數(shù)據(jù)資源。數(shù)據(jù)庫存儲的是通用化的相關數(shù)據(jù)集合,不僅包括數(shù)據(jù)本身,而且包括數(shù)據(jù)之間的聯(lián)系。
Java提供JDBCAPI支持數(shù)據(jù)庫應用,JDBC(Java數(shù)據(jù)庫連接)是基于Java的、用于訪問關系數(shù)據(jù)庫的應用程序編程接口。
JDBC提供多種數(shù)據(jù)庫驅動程序類型,提供執(zhí)行SQL語句來操縱關系數(shù)據(jù)庫的方法,使Java應用程序具有訪問不同類型數(shù)據(jù)庫的能力。第12章數(shù)據(jù)庫應用4第12章數(shù)據(jù)庫應用12.1數(shù)據(jù)庫技術12.2JDBC512.1數(shù)據(jù)庫技術數(shù)據(jù)庫(DataBase,DB):長期存儲在計算機外存上的、有結構的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型描述、組織、存儲,具有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性,可為不同的用戶共享。數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS):采用了數(shù)據(jù)庫技術的計算機系統(tǒng),包括數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、應用程序、數(shù)據(jù)庫管理員(DBA)和用戶。612.1數(shù)據(jù)庫技術結構化查詢語言(StructuredQueryLanguage):關系數(shù)據(jù)庫的標準語言,提供數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操作和數(shù)據(jù)控制功能,具有綜合統(tǒng)一、高度非過程化、面向集合等特點。表SQL語言的動詞SQL功能動詞說明數(shù)據(jù)定義CREATE、DROP、ALTER創(chuàng)建表、刪除表、修改表數(shù)據(jù)操縱INSERT、UPDATE、DELETE插入、更新、刪除數(shù)據(jù)查詢SELECT查詢數(shù)據(jù)控制GRANT、REVOKE授予權限、收回權限712.1數(shù)據(jù)庫技術MySQL是Sun公司推出的一種C/S結構的數(shù)據(jù)庫。下載MySQL數(shù)據(jù)庫服務端(MySQLCommunityServer)mysql-essential-5.1.43-win32.msi文件下載JDBC驅動程序(MySQLConnector/J)mysql-connector-java-5.0.8.bin文件MySQL設置3306端口提供數(shù)據(jù)庫服務演示:1.安裝MySQL服務器端2.安裝MySQL客戶端Navicat812.2JDBC12.2.1JDBC的作用和功能12.2.2指定JDBC驅動程序12.2.3連接數(shù)據(jù)庫12.2.4執(zhí)行SQL語句12.2.5處理數(shù)據(jù)查詢的結果集912.2.1JDBC的作用和功能1.什么是JDBC1996年,Sun推出了JDBC,將Java的應用范圍擴展到了數(shù)據(jù)庫技術領域,使Java的應用程序具有訪問不同類型數(shù)據(jù)庫的能力。JDBC(JavaDataBase
Connectivity,Java數(shù)據(jù)庫連接):基于Java的,提供連接、訪問和操縱關系數(shù)據(jù)庫的應用程序接口(API),JDBC提供在Java應用程序中執(zhí)行SQL語句以訪問和操縱關系數(shù)據(jù)庫的方法。1012.2.1JDBC的作用和功能1.什么是JDBCJDBC是一種數(shù)據(jù)庫連接和訪問標準:一方面:Java語言增加了JDBCAPI,其中包括多個用于訪問數(shù)據(jù)庫的接口;另一方面:目前大多數(shù)主流數(shù)據(jù)庫都支持JDBC,推出了各自的JDBC驅動程序,每個驅動程序都實現(xiàn)了JDBCAPI中聲明的接口。
JDBC既實現(xiàn)了應用程序與數(shù)據(jù)庫的連接,又實現(xiàn)了數(shù)據(jù)獨立性,使應用程序具有很好的可移植性,一份應用程序可應用于不同類型的數(shù)據(jù)庫。1112.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理JDBCAPI基本功能包括:(1)指定JDBC驅動程序類型,并建立與指定數(shù)據(jù)庫的連接;(2)執(zhí)行SQL語句并處理結果。(3)獲得所連接數(shù)據(jù)庫的各種信息,包括驅動程序、數(shù)據(jù)庫、表、列的屬性等?!狙a充】連接指定數(shù)據(jù)庫MySQL,并獲得數(shù)據(jù)庫屬性信息。GetDBAbout.java1212.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理為實現(xiàn)執(zhí)行SQL語句功能,要用到java.sql包中最主要的4個接口或類:DriverManager類:管理驅動程序并創(chuàng)建數(shù)據(jù)庫連接Connection接口:管理已建立的數(shù)據(jù)庫連接Statement接口:管理和執(zhí)行SQL語句ResultSet接口:存儲數(shù)據(jù)查詢返回的結果集。1312.2.1JDBC的作用和功能DriverManager(驅動程序管理器)Connection(連接)Statement(語句)ResultSet(結果集)JDBC驅動程序表生成生成生成建立與數(shù)據(jù)庫的連接圖JDBC的組成和工作原理1412.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理
Java的接口機制是分隔方法聲明與方法實現(xiàn)細節(jié)的最好機制,接口機制的優(yōu)點在JDBCAPI中得到充分體現(xiàn)。JDBCAPI聲明了多個接口提供給應用程序使用,但是這些接口的實現(xiàn)卻不是應用程序所能完成的,必須由JDBC驅動程序完成。
不同的JDBC驅動程序實現(xiàn)了相同的接口,雖然實現(xiàn)細節(jié)不同,但是提供了相同的方法。JDBC驅動程序必須實現(xiàn)的4個主要接口是:
Driver、Connection、Statement和ResultSet。Driver接口是提供給JDBC驅動程序實現(xiàn)的接口,用于裝入和管理JDBC驅動程序。1512.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理JDBC數(shù)據(jù)庫應用程序設計與普通Java應用程序設計的不同之處:不能直接調用new運算符創(chuàng)建JDBCAPI中類的實例,而由指定類的方法創(chuàng)建另一個類的實例。Connection、Statement、ResultSet等接口已由指定JDBC驅動程序實現(xiàn),因此數(shù)據(jù)庫應用程序中可以直接聲明
這些接口的變量作為類的實例使用。1612.2.2指定JDBC驅動程序1.選擇和安裝JDBC驅動程序JDBC-ODBC橋驅動程序類是sun.jdbc.odbc.JdbcOdbcDriver,由JDK默認安裝,包含在JDK安裝路徑\jdk1.6.0_14\jre\lib\rt.jar中,故而運行基于JDBC-ODBC橋的應用程序時不需要特別安裝和設置,其它三種JDBC驅動程序需要特別安裝和設置。1712.2.2指定JDBC驅動程序2.Eclipse中添加MySQLJDBC驅動程序包EclipseProject視圖(即包資源管理器)->對選中項目按右鍵選擇BuildPath(構建路徑)->ConfigBuildPath(配置構建路徑)在項目屬性對話框的Libraries(庫)頁,單擊”AddExternalJARs…(添加外部JAR(X))”按鈕,在隨后彈出的JARSelection對話框中,選擇MySQLJDBC驅動程序解壓文件夾中的mysql-connector-5.1.10-bin.jar,然后單擊確定按鈕,添加成功。演示:3.安裝JDBC驅動程序4.在Eclipse中添加MySQLJDBC驅動程序包;1812.2.2指定JDBC驅動程序java.lang.Class類的forName()方法用于指定JDBC驅動程序類型:
publicstaticClass<?>forName(StringclassName)throwsClassNotFoundException3.在應用程序中指定JDBC驅動程序為MySql數(shù)據(jù)庫指定JDBC橋驅動程序:Class.forName(“com.mysql.jdbc.Driver”);為SQLServer數(shù)據(jù)庫指定JDBC橋驅動程序:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
19操作演示:1.安裝MySQL服務器端2.安裝MySQL客戶端Navicat3.安裝JDBC驅動程序(JDBC-ODBC橋驅動程序由JDK默認安裝)4.在Eclipse中添加MySQLJDBC驅動程序包;5.在客戶端navicat中創(chuàng)建連接->創(chuàng)建數(shù)據(jù)庫->創(chuàng)建表;6.編寫數(shù)據(jù)庫相關程序:1)在應用程序中指定JDBC驅動程序;2)在應用程序中編程進行有關數(shù)據(jù)庫操作。
2012.2.3連接數(shù)據(jù)庫1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫連接DriverManager類用于管理驅動程序和創(chuàng)建數(shù)據(jù)庫連接;getConnection方法提供裝入指定JDBC驅動程序并創(chuàng)建與指定數(shù)據(jù)庫連接的操作。publicstaticsynchronizedConnection
getConnection(Stringurl,Stringuser,Stringpassword)throwsSQLExceptionpublicstaticsynchronizedConnection
getConnection(Stringurl)throwsSQLExceptionurl指定JDBC數(shù)據(jù)源的URL,user指定訪問數(shù)據(jù)庫的用戶名,password指定用戶密碼;2112.2.3連接數(shù)據(jù)庫1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫連接JDBC使用URL表示JDBC驅動程序和數(shù)據(jù)源的位置。JDBC的URL格式:jdbc:子協(xié)議:數(shù)據(jù)源<jdbc>表示這個URL指定一個JDBC數(shù)據(jù)源,<子協(xié)議>指定JDBC驅動程序類型,<數(shù)據(jù)源>指定數(shù)據(jù)源名。例如:下列語句返回創(chuàng)建的一個數(shù)據(jù)庫連接對象,其中參數(shù)指定JDBC橋驅動程序、訪問Access數(shù)據(jù)庫的數(shù)據(jù)源student_access。Connectionconnection1=DriverManager.
getConnection("jdbc:odbc:student_access");2212.2.3連接數(shù)據(jù)庫1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫連接例如:下列語句返回創(chuàng)建的一個數(shù)據(jù)庫連接對象,其中參數(shù)指定SQLServerJDBC驅動程序、數(shù)據(jù)源為“//localhost:1433;DatabaseName=student”、用戶名為“sa”、用戶密碼為“yeheya”。
Connectionconnection2=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;
DatabaseName=student","sa","yeheya“);2312.2.3連接數(shù)據(jù)庫2.Connection接口管理連接對象
Connection接口負責管理Java應用程序和數(shù)據(jù)庫之間的連接。一個Connection對象表示對一個特定數(shù)據(jù)源已經(jīng)建立的一條連接,它能夠創(chuàng)建執(zhí)行SQL的Statement語句對象,還能提供數(shù)據(jù)庫中的屬性信息。2412.2.3連接數(shù)據(jù)庫2.Connection接口管理連接對象
Statement
createStatement()throwsSQLException; //創(chuàng)建執(zhí)行SQL的語句對象Statement
createStatement(intresultSetType,intresultSetConcurrency)throwsSQLException;
//參數(shù)指定結果集屬性voidclose()throwsSQLException;//關閉數(shù)據(jù)庫連接booleanisClosed()throwsSQLException;
//判斷數(shù)據(jù)庫連接是否已關閉DatabaseMetaData
getMetaData()throws SQLException;
//獲取所連接數(shù)據(jù)庫的元數(shù)據(jù)
Statementstatement=connection.createStatement();DatabaseMetaDatadbmd=connection.getMetaData();2512.2.3連接數(shù)據(jù)庫3.DatabaseMetaData接口獲得數(shù)據(jù)庫元數(shù)據(jù)
DatabaseMetaData接口:管理通過Connection對象連接的數(shù)據(jù)庫的屬性信息(稱為元數(shù)據(jù))。publicinterfaceDatabaseMetaData{StringgetURL()throwsSQLException;
//返回連接數(shù)據(jù)庫的URLStringgetUserName()throwsSQLException;
//返回數(shù)據(jù)庫的用戶名StringgetDatabaseProductName()throwsSQLException; //返回數(shù)據(jù)庫名稱2612.2.3連接數(shù)據(jù)庫3.DatabaseMetaData接口獲得數(shù)據(jù)庫元數(shù)據(jù)
StringgetDatabaseProductVersion()throwsSQLException; //返回數(shù)據(jù)庫版本號StringgetDriverName()throwsSQLException;
//返回驅動程序名稱StringgetDriverVersion()throwsSQLException;
//返回驅動程序版本號}【例12.1】初識Java數(shù)據(jù)庫應用程序。StudentTest.java
2712.2.4執(zhí)行SQL語句Statement接口管理和執(zhí)行SQL語句,ResultSet接口存儲數(shù)據(jù)查詢返回的結果集。publicinterfaceStatement{
intexecuteUpdate(Stringsql)throwsSQLException;
//執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語句
ResultSet
executeQuery(Stringsql)throwsSQLException;
//執(zhí)行數(shù)據(jù)查詢SQL語句
boolean
execute(Stringsql)throwsSQLException; //執(zhí)行SQL語句2812.2.4執(zhí)行SQL語句
int
getUpdateCount()throwsSQLException; //獲得數(shù)據(jù)更新所影響的行數(shù)
ResultSet
getResultSet()throwsSQLException; //獲得數(shù)據(jù)查詢結果集void
close()throwsSQLException;//關閉語句}【例12.2】將數(shù)據(jù)庫應用中的不同邏輯封裝到不同的類。
Student.javaDBConn.java2912.2.4執(zhí)行SQL語句1.執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語句調用executeUpdate()方法可執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新的SQL語句。執(zhí)行數(shù)據(jù)定義的SQL語句,用于創(chuàng)建和修改臨時表,沒有返回值;執(zhí)行數(shù)據(jù)更新的SQL語句,包括INSERT、UPDATE、DELETE語句,返回執(zhí)行所影響的行數(shù)。3012.2.4執(zhí)行SQL語句1.執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語句例如:下列語句執(zhí)行Insert語句插入一行數(shù)據(jù)Statementstatement=connection.createStatement();
//創(chuàng)建執(zhí)行SQL語句的Statement對象Stringsql="INSERTINTOstuinfo(stu#,stu_name)VALUES('98111041','李偉')";intresult=statement.executeUpdate(sql); //執(zhí)行成功時返回影響的行數(shù)1【例12.2】1.向數(shù)據(jù)庫里插入一條Name為Tom,A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州衛(wèi)生職業(yè)技術學院《Web應用開發(fā)》2023-2024學年第一學期期末試卷
- 廣州鐵路職業(yè)技術學院《車輛電器與電子技術實驗》2023-2024學年第一學期期末試卷
- 2025年陜西省安全員C證考試(專職安全員)題庫及答案
- 2025甘肅省安全員《A證》考試題庫
- 2025安徽省安全員《A證》考試題庫及答案
- 揚州慢公開課課件2
- 《菱形的判定方法》課件
- 安全風險管控課件
- 《管理學院簡介》課件
- 棉鞋里的陽光課件
- 【年產(chǎn)2000噸色氨酸發(fā)酵工廠的計算與設計(附布置圖流程圖)15000字(論文)】
- 《社交禮儀(慕課版)》-課程標準
- 一年級數(shù)學練習題-20以內加減法口算題(4000道)直接打印版
- 材料性能學智慧樹知到期末考試答案章節(jié)答案2024年南昌大學
- (新版)初級磨工職業(yè)鑒定考試題庫(含答案)
- 數(shù)據(jù)中心供電系統(tǒng)應用方案
- (正式版)SH∕T 3507-2024 石油化工鋼結構工程施工及驗收規(guī)范
- 中東及非洲注塑成型模具行業(yè)現(xiàn)狀及發(fā)展機遇分析2024-2030
- 牡丹江2024年黑龍江牡丹江醫(yī)科大學招聘109人筆試歷年典型考題及考點附答案解析
- 貴州省黔西南布依族苗族自治州2023-2024學年六年級下學期6月期末語文試題
- 泰州市2022-2023學年七年級上學期期末數(shù)學試題【帶答案】
評論
0/150
提交評論