Java語言程序設(shè)計-v3-15_第1頁
Java語言程序設(shè)計-v3-15_第2頁
Java語言程序設(shè)計-v3-15_第3頁
Java語言程序設(shè)計-v3-15_第4頁
Java語言程序設(shè)計-v3-15_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

第十五章數(shù)據(jù)庫訪問遼寧機電職業(yè)技術(shù)學院信息工程系軟件教研室遲勇回顧補充代碼完成:服務器端程序:/*建立服務器端ServerSocket對象*/serverSocket=newServerSocket(2000);clientSocket=serverSocket.

();//接收來自客戶端的Socketbr=newBufferedReader(newInputStreamReader(

.getInputStream()));System.out.println(“來自客戶端的信息是:”+br.readLine());客戶端程序:SocketclientSocket=newSocket("",

);//建立客戶端的Socket/*建立接收服務器端信息的輸入流對象br*/BufferedReaderbr=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()));acceptclientSocket2000本章學習任務掌握JDBC操作數(shù)據(jù)庫的語法使用JDBC-ODBC橋訪問數(shù)據(jù)庫使用本地協(xié)議驅(qū)動(Type4)方案訪問SQLServer2000、2005、2008~2016數(shù)據(jù)庫使用JDBC4.0操作ApacheDerby本章技能目標了解JDBC的作用與地位了解JDBC的分類和使用學習使用JDBC-ODBC橋訪問數(shù)據(jù)庫掌握訪問SQLServer和其它類型的數(shù)據(jù)庫的方法掌握JDBC4.0操作ApacheDerby數(shù)據(jù)庫的方法預習檢查(1)--預習新單詞單詞釋義單詞釋義RDBMSSQLJDBCODBCnative預習檢查(2)JDBC-ODBCBridge創(chuàng)建數(shù)據(jù)庫連接串的形式JDBCType4驅(qū)動,操作MSSQLServer2008數(shù)據(jù)庫的連接串形式數(shù)據(jù)庫訪問-內(nèi)容目錄JDBC概述JDBCAPI簡介JDBC操作的基本步驟使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例連接SQLServer數(shù)據(jù)庫示例使用JDBC4.0操作ApacheDerby連接其他類型的數(shù)據(jù)庫15.1JDBC概述JDBC是一組可用于訪問數(shù)據(jù)庫的JavaAPI類庫,它由100%Java純代碼編寫的類和接口組成。從圖15-1可以看出,JDBC的結(jié)構(gòu)分為兩層:JDBCAPI和JDBCDriverAPI,前者負責應用程序與JDBCDriverManager之間的通信,后者負責JDBCDriverManager與數(shù)據(jù)庫驅(qū)動程序具體實現(xiàn)之間的通信。因為不同的DBMS的驅(qū)動(Driver)不同,為了保證網(wǎng)絡(luò)上應用程序能夠訪問到不同類型的數(shù)據(jù)庫,必須要將來自應用程序端的調(diào)用轉(zhuǎn)換成能夠為不同數(shù)據(jù)庫所能識別的驅(qū)動,JDBC就是“翻譯”。圖15-1JDBC結(jié)構(gòu)圖

應用程序1應用程序2應用程序3JDBC應用程序接口(JDBCAPI)JDBC驅(qū)動管理器(JDBCDriverManager)數(shù)據(jù)庫驅(qū)動(Driver)SQLServerMySQLOracle…………JDBC的作用如前所述,我們總結(jié)一下JDBC的作用有3點:1)與數(shù)據(jù)庫建立連接2)向數(shù)據(jù)庫發(fā)送SQL語句3)檢索數(shù)據(jù)庫返回的結(jié)果15.1.2談談ODBC

MicroSoft的ODBC(開放式數(shù)據(jù)庫連接:OpenDatabaseConnectivity)接口技術(shù)參照SQL標準化組織對SQL接口的定義而制作ODBC有四個主要組成部分:應用程序接口,驅(qū)動器管理器,數(shù)據(jù)庫驅(qū)動器和數(shù)據(jù)源。(參考圖15-2ODBC結(jié)構(gòu)圖)其中數(shù)據(jù)源(DataSource)需要在程序運行前預先設(shè)置,它包含了數(shù)據(jù)庫路徑及其驅(qū)動兩部分信息(配置方法請參考后面的示例)。圖15-2ODBC結(jié)構(gòu)圖應用程序1應用程序2應用程序3ODBC應用程序接口(ODBCAPI)ODBC驅(qū)動管理器(ODBCDriverManager)ODBC驅(qū)動(ODBCDriver)SQLServerMySQLOracle…………15.1.3JDBC支持的兩種編程模型二層模型(C/S)C/S模型被稱為客戶端(Client)/服務器(Server)模型,一般稱C/S模型為胖客戶端模型。三層模型(C/S或B/S)三層模型是指將數(shù)據(jù)處理過程分為三部分:第一層是客戶端(用戶界面層),提供用戶與系統(tǒng)的友好訪問;第二層是應用服務層(也叫中間層),專門負責業(yè)務邏輯的實現(xiàn);第三是數(shù)據(jù)層,負責數(shù)據(jù)信息的存儲、訪問及其優(yōu)化。C/S或B/S模型(瀏覽器Browser/服務器Server模型)都可以使用稱為中間層的服務層,客戶端的命令首先發(fā)送給一個所謂“中間層”的業(yè)務邏輯層,中間層再將SQL語句發(fā)給DMBS處理,執(zhí)行的結(jié)果也同樣再由中間層轉(zhuǎn)交到客戶端,如圖15-3所示。圖15-3三層模型結(jié)構(gòu)圖這樣設(shè)置編程構(gòu)架的結(jié)果是:客戶端不再承受大量的邏輯工作而轉(zhuǎn)由中間層處理,例如B/S模型的Browser是指在客戶端只安裝瀏覽器即可完成用戶的訪問,而所有負載均安置在服務器端,所以一般稱B/S模型為瘦客戶端模型三層模型最直接的好處是,將相同的業(yè)務邏輯(如訪問數(shù)據(jù)庫操作)組合為一個中間組件,利于組件的重用。當然三層模型也是分布式開發(fā)多層模型的基礎(chǔ)??蛻舳薉BMS中間層15.1.4JDBC驅(qū)動程序的類型

JDBC針對不同的應用場合,可以采用不同的方案來訪問數(shù)據(jù)庫,例如圖15-1的“數(shù)據(jù)庫Driver層”訪問DBMS時可以分為兩種情況:使用JDBC-ODBC橋或使用供應商提供的JDBC驅(qū)動,如圖15-4-1所示。Java應用程序Java驅(qū)動管理器JDBC-ODBC橋ODBC供應商提供的JDBC驅(qū)動DBMS

(圖15-4-1Java訪問數(shù)據(jù)庫的方案)JDBC驅(qū)動程序的類型其中后者又分為3種形式:本地部分Java驅(qū)動、網(wǎng)絡(luò)全驅(qū)動、本地協(xié)議全驅(qū)動,如圖15-4-2、如圖15-4-3、如圖15-4-4。

Java應用程序DB客戶端運行庫數(shù)據(jù)庫中間件服務器Java應用程序數(shù)據(jù)庫訪問中間件數(shù)據(jù)庫Java應用程序數(shù)據(jù)庫圖15-4-2本地部分Java驅(qū)動圖15-4-2網(wǎng)絡(luò)全驅(qū)動圖15-4-2本地協(xié)議全驅(qū)動四種JDBC驅(qū)動(Driver)的區(qū)別:1)JDBC-ODBC橋(JDBC-ODBCBridge)和ODBCDriver這種方案通過JDBC-ODBC橋接器連接ODBC驅(qū)動器提供數(shù)據(jù)庫連接,這要求每一臺客戶機都裝有ODBC的驅(qū)動器。由于受安裝有ODBC的操作系統(tǒng)的局限,這種方案只適用于Windows機。使用JDBC-ODBC橋的方式訪問數(shù)據(jù)庫的特點是:配置相對比較簡單,但安全性和穩(wěn)定性都比較低,基本不具備實現(xiàn)分布式能力,效率也是四種方案中最低的。

2)本地部分Java驅(qū)動(Native-APIpartly-JavaDriver)這種方案將JDBC指令轉(zhuǎn)化成連接所使用的DBMS驅(qū)動。各客戶機使用的數(shù)據(jù)庫可能是Oracle,或是Sybase等,都需要在客戶端上安裝相應DBMS的驅(qū)動程序庫。四種JDBC驅(qū)動(Driver)的區(qū)別:3)網(wǎng)絡(luò)全驅(qū)動(JDBC-NetAll-JavaDriver)這種方案將JDBC指令轉(zhuǎn)化成獨立于DBMS的網(wǎng)絡(luò)協(xié)議形式,再由服務器轉(zhuǎn)化為特定DBMS的協(xié)議形式。有關(guān)DBMS的協(xié)議由各數(shù)據(jù)庫廠商決定。這種方案可以聯(lián)接到不同的數(shù)據(jù)庫上,最為靈活,但安全性存在一定的問題,另外,作為中間件的驅(qū)動還在完善中。、4)本地協(xié)議全驅(qū)動(Native-protocolAll-JavaDriver)這種方案將JDBC指令轉(zhuǎn)化成網(wǎng)絡(luò)協(xié)議后不再轉(zhuǎn)換,由DBMS直接使用。相當于客戶機直接與服務器聯(lián)系,對局域網(wǎng)適用,訪問效率也最高。在這四種驅(qū)動中,后兩類“純Java”(All-Java)的驅(qū)動效率更高,也更具有通用性??偨Y(jié)JDBC的優(yōu)、缺點總結(jié)JDBC的優(yōu)點如下:

1)JDBCAPI與ODBC十分相似,利于理解;2)JDBC的出現(xiàn)使得編程人員從復雜語法調(diào)用中解脫,而致力于應用程序中的關(guān)鍵邏輯;標準統(tǒng)一的語法,為編程人員提供了與Java系統(tǒng)的其他部分保持一致的接口;3)100%純Java代碼制作的JDBC使得程序的可移植性大大加強;4)JDBCAPI是面向?qū)ο蟮念悗?,利于?gòu)建和維護大型應用工程。缺點如下:1)使用JDBC,訪問數(shù)據(jù)的效率會受到一定程度的影響;2)因為要兼顧Java跨平臺的因素,JDBC構(gòu)建過程中需要考慮太多不同廠家的產(chǎn)品,這使得一些驅(qū)動標準在現(xiàn)階段還不能得到完善。數(shù)據(jù)庫訪問-內(nèi)容目錄JDBC概述JDBCAPI簡介JDBC操作的基本步驟使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例連接SQLServer數(shù)據(jù)庫示例使用JDBC4.0操作ApacheDerby連接其他類型的數(shù)據(jù)庫15.2JDBCAPI簡介JDBCAPI定義了一些完成數(shù)據(jù)庫操作的接口和類,通過這些API,JDBC實現(xiàn)了三個基本的功能:建立與數(shù)據(jù)的連接、執(zhí)行SQL語句和處理執(zhí)行結(jié)果。這些接口和類都在Java.sql包中。sql包中的常用接口和類2.sql包中的常用類Java.sql.DriverManager:驅(qū)動管理器類,負責JDBCDriver的裝載、建立新的數(shù)據(jù)庫連接;Java.sql.SQLException:負責處理訪問數(shù)據(jù)庫時的出錯信息;Java.sql.SQLWarning:負責處理訪問數(shù)據(jù)庫時的警告信息。1.sql包中的常用接口java.sql.Driver:數(shù)據(jù)庫驅(qū)動類,每個驅(qū)動程序類必須實現(xiàn)的接口;java.sql.Connection:與數(shù)據(jù)庫的連接;Java.sql.Statement:管理在一個數(shù)據(jù)庫連接上的靜態(tài)SQL語句的執(zhí)行。包括兩個子接口:java.sql.PreparedStatement:可保存一個預編譯的SQL語句,以提高重復執(zhí)行的效率;java.sql.CallableStatement:執(zhí)行已存儲的可調(diào)用SQL過程;Java.sql.ResultSet:定義指定SQL語句執(zhí)行的原始結(jié)果集,并提供對執(zhí)行SQL語句后產(chǎn)生的結(jié)果集的訪問;數(shù)據(jù)庫訪問-內(nèi)容目錄JDBC概述JDBCAPI簡介JDBC操作的基本步驟使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例連接SQLServer數(shù)據(jù)庫示例使用JDBC4.0操作ApacheDerby連接其他類型的數(shù)據(jù)庫

15.3JDBC操作的基本步驟

驅(qū)動程序管理器(DriverManager)連接(Connection)驅(qū)動程序(Driver)語句(Statement)結(jié)果集(ResultSet)JDBC操作數(shù)據(jù)庫的5個基本API為:

使用以上API就可以實現(xiàn)對數(shù)據(jù)庫的操作,詳細格式如下:JDBC操作的基本步驟1)注冊驅(qū)動DriverManager類是JDBC的管理層,作用于用戶界面程序和驅(qū)動程序之間。它跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應驅(qū)動程序之間建立連接。DriverManager.registerDriver(driver);例如JDBC-ODBCBridge驅(qū)動寫成:Stringdriver=“sun.jdbc.odbc.JdbcOdbcDriver”;注冊JDBC驅(qū)動程序時,DriverManager將從驅(qū)動程序列表中讀取指定的驅(qū)動并實例化它們。若要顯示地注冊并加載某種驅(qū)動,可以使用Class.forName(),此步驟可以省略。JDBC操作的基本步驟--22)注冊并加載驅(qū)動Class類的forName()方法用于返回指定參數(shù)類的對象,這里用于加載并實例化驅(qū)動。Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);也可寫成:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();使用后一種方法加載驅(qū)動時,往往是因為程序中需要使用這個Driver的實例,如果不需要這個實例,使用前一種方法就可以了,因為在當前驅(qū)動加載時,已經(jīng)實例化完成。JDBC操作的基本步驟對于從網(wǎng)絡(luò)下載的驅(qū)動類的字符串書寫格式就要視下載包的路徑?jīng)Q定,例如不同數(shù)據(jù)庫的Driver串(以“本地協(xié)議全驅(qū)動”為例)格式如下://SQLServerclass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//MySQLclass.forName("org.gjt.mm.mysql.Driver");根據(jù)下載包結(jié)構(gòu)不同或為class.forName("com.mysql.jdbc.Driver");...與步驟1)的DriverManager.registerDriver()方法不同的是,Class.forName()方法只加載并實例化一種指定的驅(qū)動。JDBC操作的基本步驟--33)

建立連接

Connectionconn=DriverManager.getConnection(URL,[login_name],[login_password]);試圖建立到給定數(shù)據(jù)庫URL的連接。它是接口,需由DriverManager類調(diào)用自己靜態(tài)的getConnection()方法得到。建立連接的URL格式建立連接的URL格式為:

jdbc:<subprotocal>:<subname>對于odbc子協(xié)議,其格式為:jdbc:odbc:<DataSource-name>例如:Stringurl=“jdbc:odbc:mydatasource”;//其中mydatasource為數(shù)據(jù)源名而對于“全驅(qū)動”,其URL格式有所不同,例如,SQLServer的URL格式為:jdbc:microsoft:sqlserver://主機:端口號;DatabaseName=數(shù)據(jù)庫名如下例:Connectionconn

=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stuDB","sa","123");其中1433為SQLServer的端口號,stuDB為數(shù)據(jù)庫名,"sa"和"123"為SQLServer登錄名和密碼。JDBC操作的基本步驟--44)構(gòu)造語句集Statement對象負責將SQL語句發(fā)送到DBMS。它是接口,其對象需由Connection對象調(diào)用createStatement()方法得到。Statementstmt=conn.createStatement( [intresultSetType], [intresultSetConcurrency], [intresultSetHoldability]);其中,參數(shù)resultSetType為鍵集類型,resultSetConcurrency為鍵集并發(fā)性,resultSetHoldability為鍵集可保持能力.如:表15-1createStatement()方法參數(shù)匯總JDBC操作的基本步驟Statement有兩個子接口Preparedstatement和Callablestatement,如圖15-5。StatementPreparedStatementCallableStatement圖15-5Statement類及其子類createStatement()方法參數(shù)匯總createStatement()方法參數(shù)匯總resultSetType為以下常量之一ResultSet.TYPE_FORWARD_ONLY結(jié)果集記錄指針只能向下移動ResultSet.TYPE_SCROLL_INSENSITIVE結(jié)果集記錄指針可以上下移動,但數(shù)據(jù)庫變化不會改變當前結(jié)果集ResultSet.TYPE_SCROLL_SENSITIVE結(jié)果集記錄指針可以上下移動,但數(shù)據(jù)庫變化后,當前結(jié)果集發(fā)生同步改變resultSetConcurrency為以下常量之一ResultSet.CONCUR_READ_ONLY結(jié)果集只讀,不能更新數(shù)據(jù)庫中的數(shù)據(jù)ResultSet.CONCUR_UPDATABLE結(jié)果集可更新,會影響到數(shù)據(jù)庫中的數(shù)據(jù)resultSetHoldability為以下常量之一ResultSet.HOLD_CURSORS_OVER_COMMIT表示修改提交時,不關(guān)閉ResultSet的游標ResultSet.CLOSE_CURSORS_AT_COMMIT表示修改提交時,關(guān)閉ResultSet的游標JDBC操作的基本步驟PreparedstatementPreparedstatement實例中包含了一個已經(jīng)預編譯過的SQL語句,因此,要多次執(zhí)行一個SQL語句,使用PreparedStatement。SQL語句在創(chuàng)建時提供輸入?yún)?shù),使用pstmt.setXXX()方法來設(shè)置參數(shù),用executeUpdate()方法執(zhí)行SQL語句。例如下面的程序段:

PreparedStatementpStmt=conn.preparedStatement("insertintoemp(empno,ename)values(?,?)"); pStmt.setInt(1,12);//給第一個位置的參數(shù)設(shè)值為12 pStmt.setString(2,"tom");//給第二個位置的參數(shù)設(shè)值為"tom" pStmt.executeUpdate();//執(zhí)行SQL語句JDBC操作的基本步驟CallablestatementCallableStatement用于執(zhí)行SQL存儲過程,可以利用存儲過程設(shè)置輸入或輸出參數(shù)。例如,有存儲過程showEmployees(in,out),其中in和out為參數(shù)。

CallableStatementcStmt=conn.prepareCall("{callshowEmployees(?,?)}");JDBC操作的基本步驟--55.

提交SQL語句常用SQL語句介紹:SQL語句大致分為3種:DDL(數(shù)據(jù)定義語言)如CREATE,ALTER,DROP,DECLAREDML(數(shù)據(jù)操縱語言)如SELECT,DELETE,UPDATE,INSERTDCL(數(shù)據(jù)控制語言)如GRANT,REVOKE,COMMIT,ROLLBACK執(zhí)行提交SQL語句的方法:Statement及其子接口支持下列3種方法將SQL語句提交到DBMSexecuteQuery()方法:主要用于SELECT語句,返回值是結(jié)果集,例如:ResultSetrs=stmt.executeQuery("select*fromcustmer");executeUpdate()方法:用來創(chuàng)建和更新表(如:insert,delete,update,create,drop等),返回值是整型值,用以表示被影響的行數(shù),例如:intnum=stmt.executeUpdate("createtableCustmer(CustIdnumber(3),CustNamevarchar2(15)");execute()方法:返回布爾值,用于執(zhí)行任何SQL語句,適用于一次性返回多個結(jié)果集的情況,例如:booleanb=stmt.execute("……更新一個字段值,它在多個表中有關(guān)聯(lián)關(guān)系……");JDBC操作的基本步驟--66.關(guān)閉ResultSet,Statement,Connection對象

rs.close();

stmt.close();//同時關(guān)閉了rs

conn.close();需要注意,關(guān)閉Statement對象的同時也會關(guān)閉其當前的ResultSet對象,如果有的話。數(shù)據(jù)庫訪問-內(nèi)容目錄JDBC概述JDBCAPI簡介JDBC操作的基本步驟使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例連接SQLServer數(shù)據(jù)庫示例使用JDBC4.0操作ApacheDerby連接其他類型的數(shù)據(jù)庫

15.4使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例

下面,我們參照15.3節(jié)介紹的步驟,使用最簡單的JDBC-ODBCBridge方式連接Access數(shù)據(jù)庫。假定有Access庫文件為student.mdb,庫中有表stuTable,其設(shè)計視圖如圖15-6所示:圖15-6student.mdb庫的設(shè)計視圖圖15-7student.mdb庫的數(shù)據(jù)視圖數(shù)據(jù)視圖如圖15-7所示:使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例1.首先設(shè)置ODBC數(shù)據(jù)源打開“控制面板”,選擇其中的“管理工具”,再打開“數(shù)據(jù)源(ODBC)”,如圖15-8所示。圖15-8使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例選擇“系統(tǒng)DSN”選項卡,單擊“添加”按鈕,在打開的選擇框中選擇“MicrosoftAccessDriver(*.mdb)”驅(qū)動如圖15-9所示。在隨后的對話框中(圖15-10)的“數(shù)據(jù)源名”文本框中輸入“stuDataSource”做為數(shù)據(jù)源名稱,然后單擊“選擇”按鈕,進入下一步。圖15-9使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例圖15-10在打開的“選擇數(shù)據(jù)庫”對話框中選中student.mdb數(shù)據(jù)庫即可,如圖15-11。使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例圖15-12單擊確定完成ODBC數(shù)據(jù)源的配置,如圖15-12所示。圖15-11編寫源代碼importjava.sql.*;//導入sql包publicclassTestJDBC{ publicstaticvoidmain(Stringargs[]) { intid,score; Stringname; Connectioncon;//定義連接對象

Statementstmt;//定義語句集對象

ResultSetrs;//定義鍵集對象

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}//加載驅(qū)動

catch(ClassNotFoundExceptione){}try{ con=DriverManager.getConnection("jdbc:odbc:stuDataSource");//創(chuàng)建數(shù)據(jù)庫連接

stmt=con.createStatement();//創(chuàng)建語句集

rs=stmt.executeQuery("select*fromstuTablewherescorelike'%"+args[0]+"%'");//以控制臺參數(shù)為查詢條件執(zhí)行查詢并返回鍵集

while(rs.next())//判斷鍵集是否有下一條記錄

{ id=rs.getInt("id");//獲取當前記錄的第一個值(即學號)

name=rs.getString(2); score=rs.getInt("score"); System.out.print("學生學號為:"+id); System.out.print("學生姓名為:"+name); System.out.print("學生成績?yōu)椋?+score); System.out.println(""); } }catch(SQLExceptione){}}}【運行結(jié)果】在控制臺中輸入如下命令運行:控制臺提示符>javaTestJDBC9將輸出所有分數(shù)中帶字符‘9’的記錄,如圖所示。數(shù)據(jù)庫訪問-內(nèi)容目錄JDBC概述JDBCAPI簡介JDBC操作的基本步驟使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例連接SQLServer數(shù)據(jù)庫示例使用JDBC4.0操作ApacheDerby連接其他類型的數(shù)據(jù)庫15.5連接SQLServer數(shù)據(jù)庫示例1.安裝SQLServer數(shù)據(jù)庫注意事項:本小節(jié)我們將學習一個使用Type4驅(qū)動類型(Java本地協(xié)議全驅(qū)動)來操作數(shù)據(jù)庫的例子。因為默認時JDBC不支持SQLServer數(shù)據(jù)庫的“Windows認證”方式,所以SQLServer的安裝過程中一定要選擇“混合身份驗證安裝”。15.5連接SQLServer數(shù)據(jù)庫示例2.數(shù)據(jù)庫驅(qū)動的下載:讀者可以從網(wǎng)絡(luò)上microsoft公司的下載頁面中找到SQLServer本地協(xié)議驅(qū)動(Type4),或從搜索引擎中得到驅(qū)動的下載鏈接。例如:SQLServer2000驅(qū)動包括下面三個文件:msutil.jar、mssqlserver.jar、msbase.jar。JDBC4.0驅(qū)動文件為:sqljdbc4.jar。參考微軟官方下載網(wǎng)址:/downloads/,下載最新的驅(qū)動。3.配置:將這三個文件復制到指定目錄(假設(shè)為D:\JDBCDriver)并配置到classpath環(huán)境變量中,格式如下:.;D:\JDBCDriver\msutil.jar;D:\JDBCDriver\mssqlserver.jar;D:\JDBCDriver\msbase.jar4.兩種連接串形式Connectionconn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stuDB","sa","123");或:Connectionconn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stuDB?user=sa&password=123");其中sa為數(shù)據(jù)庫登錄用戶名,123為登錄數(shù)據(jù)庫的密碼。15.5連接SQLServer數(shù)據(jù)庫示例5.程序?qū)嵗僭O(shè)有SQLServer數(shù)據(jù)庫stuDB,庫中有學生數(shù)據(jù)表stuTable(字段同圖15-7)?,F(xiàn)在學校要為指定的學生更改成績,使用的SQL語句為:UPDATEstuTableSETscore=score+分數(shù)值WHEREid<學號范圍andscore<分數(shù);考慮到需要更改成績的學生可能有多個,因此使用PreparedStatement類完成,它可以預編譯SQL語句,有利于處理速度的提高。代碼如下:15.5連接SQLServer數(shù)據(jù)庫示例importjava.sql.*;publicclassUpdateStuDB{publicstaticvoidmain(String[]args){ Stringurl,user,password; url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=StuDB“; user="sa“;password="123"; try{/*加載數(shù)據(jù)庫驅(qū)動*/ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

}

catch(ClassNotFoundExceptionex){ ex.printStackTrace();

}try{ Connectioncon=DriverManager.getConnection(url,user,password); /*SQL語句中的?號為待輸入?yún)?shù),將由setXXX()方法賦值*/StringstrSQL="UPDATEstuTableSETscore=score+5FROMstuTableWHEREid<?andscore<?"; /*創(chuàng)建PreparedStatement語句集對象*/PreparedStatementpstmt=con.prepareStatement(strSQL); pstmt.setInt(1,50);//給SQL語句的第一個參數(shù)賦值

pstmt.setInt(2,90);//給SQL語句的第二個參數(shù)賦值

intflag=pstmt.executeUpdate();//提交更新操作

if(flag!=0){ System.out.println("數(shù)據(jù)庫更新成功!"); } }catch(SQLExceptionex){}}}【運行結(jié)果】數(shù)據(jù)庫更新成功!查看數(shù)據(jù)庫發(fā)現(xiàn),所有分數(shù)小于90分的學生的成績增加了5分。數(shù)據(jù)庫訪問-內(nèi)容目錄JDBC概述JDBCAPI簡介JDBC操作的基本步驟使用JDBC-ODBCBridge連接數(shù)據(jù)庫示例連接SQLServer數(shù)據(jù)庫示例使用JDBC4.0操作ApacheDerby連接其他類型的數(shù)據(jù)庫15.6使用JDBC4.0操作ApacheDerby什么是ApacheDerby?DK6新增了一個名為JavaDB的安裝項目,默認安裝在Sun\JavaDB目錄下,它就是ApacheDerby內(nèi)嵌式數(shù)據(jù)庫。JavaDB是JavaSE6的新成員,是一個純Java實現(xiàn)、開源的數(shù)據(jù)庫管理系統(tǒng)(DBMS),源于Apache軟件基金會(ASF)名下的項目Derby。它的完整類庫只有4MB大小。控制臺命令行完成Derby數(shù)據(jù)庫操作假定Derby數(shù)據(jù)庫安裝在D:\Java\Sun\JavaDB目錄下,其lib目錄內(nèi)容如下,如圖15-20圖15-20控制臺命令行完成Derby數(shù)據(jù)庫操作在內(nèi)嵌模式下創(chuàng)建庫及表的步驟如下:首先,在控制臺中進入lib目錄;執(zhí)行:java-jarderbyrun.jarij,就進入數(shù)據(jù)庫內(nèi)嵌運行模式;然后在ij>下輸入connect'jdbc:derby:StuDB;create=true';創(chuàng)建數(shù)據(jù)表,名稱為stuTable,有三個字段:createtablestuTable(idint,namevarchar(20),scoreint);插入數(shù)據(jù):insertintostuTablevalues(1,'Tom',99);insertintostuTablevalues(2,'Marry',100);查詢數(shù)據(jù):select*fromstuTable;退出用內(nèi)嵌模式用exit;圖15-20查詢Derby數(shù)據(jù)庫操作的實例步驟如下:將上面創(chuàng)建的StuDB移動到TestDerby.java程序代碼所在的目錄中;將derby.jar類庫配置到classpath環(huán)境變量中編譯后,運行。//Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();Connectionconn=DriverManager.getConnection("jdbc:derby:stuDB;user=app;password=app“);Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(“SELECTid,name,scoreFROMstuTable”);while(rs.next()){...}運行結(jié)果使用JDBC4.0操作ApacheDerby數(shù)據(jù)庫:創(chuàng)建與查詢//Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”).newInstance();conn=DriverManager.getConnection("jdbc:derby:stuDB;create=true;user=app;password=app“);conn.setAutoCommit(false);Statementstmt=conn.createStatement();stmt.execute("createtablestuTable(idint,namevarchar(20),scoreint)“);stmt.execute(“insertintostuTablevalues(1,‘Tom’,99)”);stmt.execute(“insertintostuTablevalues(2,‘Marry’,100)”);ResultSetrs=stmt.executeQuery(“SELECTid,name,scoreFROMstuTable”);System.out.println(“id\tname\tscore”);while(rs.next()){StringBuilderbuilder=newStringBuilder(rs.getInt(1)); builder.append(rs.getString(2));... System.out.println(builder.toString());}stmt.execute(“droptableStuTable”);rs.close();stmt.close();mit();conn.close();Derby的網(wǎng)絡(luò)模式模擬一個在本地機(localhost)運行網(wǎng)絡(luò)模式的實例步驟如下:1)將derby.jar、derbynet.jar、derbytools.jar、derbyclient.jar類庫配置到classpath環(huán)境變量中,或者從控制臺直接進入Java

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論