版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java面向?qū)ο?/p>
程序設(shè)計(jì)基礎(chǔ)教程河南大學(xué)計(jì)算機(jī)與信息工程學(xué)院目錄第1章Java語(yǔ)言概述第2章Java基本語(yǔ)法規(guī)則第3章Java中的面向?qū)ο蠹夹g(shù)第4章Java基本結(jié)構(gòu)程序第5章Java基本類第6章圖形用戶界面第7章異常處理第8章多線程第9章JavaApplet程序第10章輸入輸出流與文件處理第11章Java網(wǎng)絡(luò)編程第12章數(shù)據(jù)庫(kù)應(yīng)用3
數(shù)據(jù)庫(kù)技術(shù)有效地管理和存取大量的數(shù)據(jù)資源。數(shù)據(jù)庫(kù)存儲(chǔ)的是通用化的相關(guān)數(shù)據(jù)集合,不僅包括數(shù)據(jù)本身,而且包括數(shù)據(jù)之間的聯(lián)系。
Java提供JDBCAPI支持?jǐn)?shù)據(jù)庫(kù)應(yīng)用,JDBC(Java數(shù)據(jù)庫(kù)連接)是基于Java的、用于訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)的應(yīng)用程序編程接口。
JDBC提供多種數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序類型,提供執(zhí)行SQL語(yǔ)句來(lái)操縱關(guān)系數(shù)據(jù)庫(kù)的方法,使Java應(yīng)用程序具有訪問(wèn)不同類型數(shù)據(jù)庫(kù)的能力。第12章數(shù)據(jù)庫(kù)應(yīng)用4第12章數(shù)據(jù)庫(kù)應(yīng)用12.1數(shù)據(jù)庫(kù)技術(shù)12.2JDBC512.1數(shù)據(jù)庫(kù)技術(shù)數(shù)據(jù)庫(kù)(DataBase,DB):長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)外存上的、有結(jié)構(gòu)的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型描述、組織、存儲(chǔ),具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,可為不同的用戶共享。數(shù)據(jù)庫(kù)系統(tǒng)(DataBaseSystem,DBS):采用了數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)系統(tǒng),包括數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)、應(yīng)用程序、數(shù)據(jù)庫(kù)管理員(DBA)和用戶。612.1數(shù)據(jù)庫(kù)技術(shù)結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage):關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,提供數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操作和數(shù)據(jù)控制功能,具有綜合統(tǒng)一、高度非過(guò)程化、面向集合等特點(diǎn)。表SQL語(yǔ)言的動(dòng)詞SQL功能動(dòng)詞說(shuō)明數(shù)據(jù)定義CREATE、DROP、ALTER創(chuàng)建表、刪除表、修改表數(shù)據(jù)操縱INSERT、UPDATE、DELETE插入、更新、刪除數(shù)據(jù)查詢SELECT查詢數(shù)據(jù)控制GRANT、REVOKE授予權(quán)限、收回權(quán)限712.1數(shù)據(jù)庫(kù)技術(shù)MySQL是Sun公司推出的一種C/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)。下載MySQL數(shù)據(jù)庫(kù)服務(wù)端(MySQLCommunityServer)mysql-essential-5.1.43-win32.msi文件下載JDBC驅(qū)動(dòng)程序(MySQLConnector/J)mysql-connector-java-5.0.8.bin文件MySQL設(shè)置3306端口提供數(shù)據(jù)庫(kù)服務(wù)演示:1.安裝MySQL服務(wù)器端2.安裝MySQL客戶端Navicat812.2JDBC12.2.1JDBC的作用和功能12.2.2指定JDBC驅(qū)動(dòng)程序12.2.3連接數(shù)據(jù)庫(kù)12.2.4執(zhí)行SQL語(yǔ)句12.2.5處理數(shù)據(jù)查詢的結(jié)果集912.2.1JDBC的作用和功能1.什么是JDBC1996年,Sun推出了JDBC,將Java的應(yīng)用范圍擴(kuò)展到了數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,使Java的應(yīng)用程序具有訪問(wèn)不同類型數(shù)據(jù)庫(kù)的能力。JDBC(JavaDataBase
Connectivity,Java數(shù)據(jù)庫(kù)連接):基于Java的,提供連接、訪問(wèn)和操縱關(guān)系數(shù)據(jù)庫(kù)的應(yīng)用程序接口(API),JDBC提供在Java應(yīng)用程序中執(zhí)行SQL語(yǔ)句以訪問(wèn)和操縱關(guān)系數(shù)據(jù)庫(kù)的方法。1012.2.1JDBC的作用和功能1.什么是JDBCJDBC是一種數(shù)據(jù)庫(kù)連接和訪問(wèn)標(biāo)準(zhǔn):一方面:Java語(yǔ)言增加了JDBCAPI,其中包括多個(gè)用于訪問(wèn)數(shù)據(jù)庫(kù)的接口;另一方面:目前大多數(shù)主流數(shù)據(jù)庫(kù)都支持JDBC,推出了各自的JDBC驅(qū)動(dòng)程序,每個(gè)驅(qū)動(dòng)程序都實(shí)現(xiàn)了JDBCAPI中聲明的接口。
JDBC既實(shí)現(xiàn)了應(yīng)用程序與數(shù)據(jù)庫(kù)的連接,又實(shí)現(xiàn)了數(shù)據(jù)獨(dú)立性,使應(yīng)用程序具有很好的可移植性,一份應(yīng)用程序可應(yīng)用于不同類型的數(shù)據(jù)庫(kù)。1112.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理JDBCAPI基本功能包括:(1)指定JDBC驅(qū)動(dòng)程序類型,并建立與指定數(shù)據(jù)庫(kù)的連接;(2)執(zhí)行SQL語(yǔ)句并處理結(jié)果。(3)獲得所連接數(shù)據(jù)庫(kù)的各種信息,包括驅(qū)動(dòng)程序、數(shù)據(jù)庫(kù)、表、列的屬性等?!狙a(bǔ)充】連接指定數(shù)據(jù)庫(kù)MySQL,并獲得數(shù)據(jù)庫(kù)屬性信息。GetDBAbout.java1212.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理為實(shí)現(xiàn)執(zhí)行SQL語(yǔ)句功能,要用到j(luò)ava.sql包中最主要的4個(gè)接口或類:DriverManager類:管理驅(qū)動(dòng)程序并創(chuàng)建數(shù)據(jù)庫(kù)連接Connection接口:管理已建立的數(shù)據(jù)庫(kù)連接Statement接口:管理和執(zhí)行SQL語(yǔ)句ResultSet接口:存儲(chǔ)數(shù)據(jù)查詢返回的結(jié)果集。1312.2.1JDBC的作用和功能DriverManager(驅(qū)動(dòng)程序管理器)Connection(連接)Statement(語(yǔ)句)ResultSet(結(jié)果集)JDBC驅(qū)動(dòng)程序表生成生成生成建立與數(shù)據(jù)庫(kù)的連接圖JDBC的組成和工作原理1412.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理
Java的接口機(jī)制是分隔方法聲明與方法實(shí)現(xiàn)細(xì)節(jié)的最好機(jī)制,接口機(jī)制的優(yōu)點(diǎn)在JDBCAPI中得到充分體現(xiàn)。JDBCAPI聲明了多個(gè)接口提供給應(yīng)用程序使用,但是這些接口的實(shí)現(xiàn)卻不是應(yīng)用程序所能完成的,必須由JDBC驅(qū)動(dòng)程序完成。
不同的JDBC驅(qū)動(dòng)程序?qū)崿F(xiàn)了相同的接口,雖然實(shí)現(xiàn)細(xì)節(jié)不同,但是提供了相同的方法。JDBC驅(qū)動(dòng)程序必須實(shí)現(xiàn)的4個(gè)主要接口是:
Driver、Connection、Statement和ResultSet。Driver接口是提供給JDBC驅(qū)動(dòng)程序?qū)崿F(xiàn)的接口,用于裝入和管理JDBC驅(qū)動(dòng)程序。1512.2.1JDBC的作用和功能2.JDBC的基本功能、組成和工作原理JDBC數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)與普通Java應(yīng)用程序設(shè)計(jì)的不同之處:不能直接調(diào)用new運(yùn)算符創(chuàng)建JDBCAPI中類的實(shí)例,而由指定類的方法創(chuàng)建另一個(gè)類的實(shí)例。Connection、Statement、ResultSet等接口已由指定JDBC驅(qū)動(dòng)程序?qū)崿F(xiàn),因此數(shù)據(jù)庫(kù)應(yīng)用程序中可以直接聲明
這些接口的變量作為類的實(shí)例使用。1612.2.2指定JDBC驅(qū)動(dòng)程序1.選擇和安裝JDBC驅(qū)動(dòng)程序JDBC-ODBC橋驅(qū)動(dòng)程序類是sun.jdbc.odbc.JdbcOdbcDriver,由JDK默認(rèn)安裝,包含在JDK安裝路徑\jdk1.6.0_14\jre\lib\rt.jar中,故而運(yùn)行基于JDBC-ODBC橋的應(yīng)用程序時(shí)不需要特別安裝和設(shè)置,其它三種JDBC驅(qū)動(dòng)程序需要特別安裝和設(shè)置。1712.2.2指定JDBC驅(qū)動(dòng)程序2.Eclipse中添加MySQLJDBC驅(qū)動(dòng)程序包EclipseProject視圖(即包資源管理器)->對(duì)選中項(xiàng)目按右鍵選擇BuildPath(構(gòu)建路徑)->ConfigBuildPath(配置構(gòu)建路徑)在項(xiàng)目屬性對(duì)話框的Libraries(庫(kù))頁(yè),單擊”AddExternalJARs…(添加外部JAR(X))”按鈕,在隨后彈出的JARSelection對(duì)話框中,選擇MySQLJDBC驅(qū)動(dòng)程序解壓文件夾中的mysql-connector-5.1.10-bin.jar,然后單擊確定按鈕,添加成功。演示:3.安裝JDBC驅(qū)動(dòng)程序4.在Eclipse中添加MySQLJDBC驅(qū)動(dòng)程序包;1812.2.2指定JDBC驅(qū)動(dòng)程序java.lang.Class類的forName()方法用于指定JDBC驅(qū)動(dòng)程序類型:
publicstaticClass<?>forName(StringclassName)throwsClassNotFoundException3.在應(yīng)用程序中指定JDBC驅(qū)動(dòng)程序?yàn)镸ySql數(shù)據(jù)庫(kù)指定JDBC橋驅(qū)動(dòng)程序:Class.forName(“com.mysql.jdbc.Driver”);為SQLServer數(shù)據(jù)庫(kù)指定JDBC橋驅(qū)動(dòng)程序:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
19操作演示:1.安裝MySQL服務(wù)器端2.安裝MySQL客戶端Navicat3.安裝JDBC驅(qū)動(dòng)程序(JDBC-ODBC橋驅(qū)動(dòng)程序由JDK默認(rèn)安裝)4.在Eclipse中添加MySQLJDBC驅(qū)動(dòng)程序包;5.在客戶端navicat中創(chuàng)建連接->創(chuàng)建數(shù)據(jù)庫(kù)->創(chuàng)建表;6.編寫數(shù)據(jù)庫(kù)相關(guān)程序:1)在應(yīng)用程序中指定JDBC驅(qū)動(dòng)程序;2)在應(yīng)用程序中編程進(jìn)行有關(guān)數(shù)據(jù)庫(kù)操作。
2012.2.3連接數(shù)據(jù)庫(kù)1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫(kù)連接DriverManager類用于管理驅(qū)動(dòng)程序和創(chuàng)建數(shù)據(jù)庫(kù)連接;getConnection方法提供裝入指定JDBC驅(qū)動(dòng)程序并創(chuàng)建與指定數(shù)據(jù)庫(kù)連接的操作。publicstaticsynchronizedConnection
getConnection(Stringurl,Stringuser,Stringpassword)throwsSQLExceptionpublicstaticsynchronizedConnection
getConnection(Stringurl)throwsSQLExceptionurl指定JDBC數(shù)據(jù)源的URL,user指定訪問(wèn)數(shù)據(jù)庫(kù)的用戶名,password指定用戶密碼;2112.2.3連接數(shù)據(jù)庫(kù)1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫(kù)連接JDBC使用URL表示JDBC驅(qū)動(dòng)程序和數(shù)據(jù)源的位置。JDBC的URL格式:jdbc:子協(xié)議:數(shù)據(jù)源<jdbc>表示這個(gè)URL指定一個(gè)JDBC數(shù)據(jù)源,<子協(xié)議>指定JDBC驅(qū)動(dòng)程序類型,<數(shù)據(jù)源>指定數(shù)據(jù)源名。例如:下列語(yǔ)句返回創(chuàng)建的一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,其中參數(shù)指定JDBC橋驅(qū)動(dòng)程序、訪問(wèn)Access數(shù)據(jù)庫(kù)的數(shù)據(jù)源student_access。Connectionconnection1=DriverManager.
getConnection("jdbc:odbc:student_access");2212.2.3連接數(shù)據(jù)庫(kù)1.DriverManager類創(chuàng)建與指定數(shù)據(jù)庫(kù)連接例如:下列語(yǔ)句返回創(chuàng)建的一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,其中參數(shù)指定SQLServerJDBC驅(qū)動(dòng)程序、數(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ù)庫(kù)2.Connection接口管理連接對(duì)象
Connection接口負(fù)責(zé)管理Java應(yīng)用程序和數(shù)據(jù)庫(kù)之間的連接。一個(gè)Connection對(duì)象表示對(duì)一個(gè)特定數(shù)據(jù)源已經(jīng)建立的一條連接,它能夠創(chuàng)建執(zhí)行SQL的Statement語(yǔ)句對(duì)象,還能提供數(shù)據(jù)庫(kù)中的屬性信息。2412.2.3連接數(shù)據(jù)庫(kù)2.Connection接口管理連接對(duì)象
Statement
createStatement()throwsSQLException; //創(chuàng)建執(zhí)行SQL的語(yǔ)句對(duì)象Statement
createStatement(intresultSetType,intresultSetConcurrency)throwsSQLException;
//參數(shù)指定結(jié)果集屬性voidclose()throwsSQLException;//關(guān)閉數(shù)據(jù)庫(kù)連接booleanisClosed()throwsSQLException;
//判斷數(shù)據(jù)庫(kù)連接是否已關(guān)閉DatabaseMetaData
getMetaData()throws SQLException;
//獲取所連接數(shù)據(jù)庫(kù)的元數(shù)據(jù)
Statementstatement=connection.createStatement();DatabaseMetaDatadbmd=connection.getMetaData();2512.2.3連接數(shù)據(jù)庫(kù)3.DatabaseMetaData接口獲得數(shù)據(jù)庫(kù)元數(shù)據(jù)
DatabaseMetaData接口:管理通過(guò)Connection對(duì)象連接的數(shù)據(jù)庫(kù)的屬性信息(稱為元數(shù)據(jù))。publicinterfaceDatabaseMetaData{StringgetURL()throwsSQLException;
//返回連接數(shù)據(jù)庫(kù)的URLStringgetUserName()throwsSQLException;
//返回?cái)?shù)據(jù)庫(kù)的用戶名StringgetDatabaseProductName()throwsSQLException; //返回?cái)?shù)據(jù)庫(kù)名稱2612.2.3連接數(shù)據(jù)庫(kù)3.DatabaseMetaData接口獲得數(shù)據(jù)庫(kù)元數(shù)據(jù)
StringgetDatabaseProductVersion()throwsSQLException; //返回?cái)?shù)據(jù)庫(kù)版本號(hào)StringgetDriverName()throwsSQLException;
//返回驅(qū)動(dòng)程序名稱StringgetDriverVersion()throwsSQLException;
//返回驅(qū)動(dòng)程序版本號(hào)}【例12.1】初識(shí)Java數(shù)據(jù)庫(kù)應(yīng)用程序。StudentTest.java
2712.2.4執(zhí)行SQL語(yǔ)句Statement接口管理和執(zhí)行SQL語(yǔ)句,ResultSet接口存儲(chǔ)數(shù)據(jù)查詢返回的結(jié)果集。publicinterfaceStatement{
intexecuteUpdate(Stringsql)throwsSQLException;
//執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語(yǔ)句
ResultSet
executeQuery(Stringsql)throwsSQLException;
//執(zhí)行數(shù)據(jù)查詢SQL語(yǔ)句
boolean
execute(Stringsql)throwsSQLException; //執(zhí)行SQL語(yǔ)句2812.2.4執(zhí)行SQL語(yǔ)句
int
getUpdateCount()throwsSQLException; //獲得數(shù)據(jù)更新所影響的行數(shù)
ResultSet
getResultSet()throwsSQLException; //獲得數(shù)據(jù)查詢結(jié)果集void
close()throwsSQLException;//關(guān)閉語(yǔ)句}【例12.2】將數(shù)據(jù)庫(kù)應(yīng)用中的不同邏輯封裝到不同的類。
Student.javaDBConn.java2912.2.4執(zhí)行SQL語(yǔ)句1.執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語(yǔ)句調(diào)用executeUpdate()方法可執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新的SQL語(yǔ)句。執(zhí)行數(shù)據(jù)定義的SQL語(yǔ)句,用于創(chuàng)建和修改臨時(shí)表,沒(méi)有返回值;執(zhí)行數(shù)據(jù)更新的SQL語(yǔ)句,包括INSERT、UPDATE、DELETE語(yǔ)句,返回執(zhí)行所影響的行數(shù)。3012.2.4執(zhí)行SQL語(yǔ)句1.執(zhí)行數(shù)據(jù)定義和數(shù)據(jù)更新SQL語(yǔ)句例如:下列語(yǔ)句執(zhí)行Insert語(yǔ)句插入一行數(shù)據(jù)Statementstatement=connection.createStatement();
//創(chuàng)建執(zhí)行SQL語(yǔ)句的Statement對(duì)象Stringsql="INSERTINTOstuinfo(stu#,stu_name)VALUES('98111041','李偉')";intresult=statement.executeUpdate(sql); //執(zhí)行成功時(shí)返回影響的行數(shù)1【例12.2】1.向數(shù)據(jù)庫(kù)里插入一條Name為Tom,A
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建師范大學(xué)《中國(guó)畫基礎(chǔ)》2021-2022學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《化工原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《歌曲寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 雙減政策下的幼小銜接教學(xué)初探
- 八下地理課件教學(xué)課件
- 2024年肇慶駕駛員客運(yùn)從業(yè)資格證模擬考試題庫(kù)
- 癌痛的治療治療
- 2024年道路客運(yùn)從業(yè)資格證模擬考試題庫(kù)APP
- 2024年郴州道路旅客運(yùn)輸駕駛員從業(yè)資格考試試題及答案
- 2025屆山東省青島市城陽(yáng)區(qū)生物高三上期末統(tǒng)考試題含解析
- 防火封堵報(bào)價(jià)范本
- 口腔新技術(shù)護(hù)理課件
- 奇正藏藥行業(yè)分析
- 農(nóng)牧項(xiàng)目計(jì)劃書
- 《設(shè)計(jì)管理體系》課件
- 奧迪售后管理制度
- 區(qū)域發(fā)展的自然環(huán)境基礎(chǔ)(教學(xué)課件含視頻) -高中地理人教版2019選擇性必修二
- 輿情處置培訓(xùn)課件
- 科技倫理教學(xué)課件
- 商會(huì)成立大會(huì)監(jiān)事長(zhǎng)表態(tài)發(fā)言稿
- 【高新技術(shù)企業(yè)所得稅稅務(wù)籌劃探析案例:以科大訊飛為例13000字(論文)】
評(píng)論
0/150
提交評(píng)論