張旭輝 沈陽(yáng)職業(yè)技術(shù)學(xué)院 110045
?
淺析Java中的數(shù)據(jù)庫(kù)訪問(wèn)
張旭輝 沈陽(yáng)職業(yè)技術(shù)學(xué)院 110045
【文章摘要】
本文介紹了在Java如何對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取,包括利用JDBC技術(shù)、驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)庫(kù)的連接、具體操作。重點(diǎn)講解如何設(shè)計(jì)數(shù)據(jù)管理類(lèi)以減少代碼的冗余。
【關(guān)鍵詞】
數(shù)據(jù)庫(kù);JDBC;數(shù)據(jù)管理類(lèi)
Java作為一種簡(jiǎn)單的面向?qū)ο蟮恼Z(yǔ)言,擁有跨平臺(tái)、分布式、安全、可移植等眾多優(yōu)點(diǎn)。在包括網(wǎng)絡(luò)、移動(dòng)等很多領(lǐng)域都得到了廣泛的應(yīng)用。
隨著大數(shù)據(jù)等概念的提出,現(xiàn)在的軟件開(kāi)發(fā)越來(lái)越重視對(duì)數(shù)據(jù)的提取,很多的企業(yè)級(jí)應(yīng)用程序多涉及到對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作。因此Java程序?qū)?shù)據(jù)庫(kù)的訪問(wèn)和操作是Java開(kāi)發(fā)中不可或缺的知識(shí)點(diǎn),也是Java程序設(shè)計(jì)中重要的一個(gè)部分。
1.1JDBC原理
JDBC(Java DataBase Connectivity)是由Sun Microsystem公司提供的API (Application Programming Interface應(yīng)用程序編程接口),它為Java應(yīng)用程序提供了一系列的類(lèi),使其能夠快速高效地訪問(wèn)數(shù)據(jù)庫(kù),這些功能是由一系列的類(lèi)和對(duì)象來(lái)完成的,我們只需使用相關(guān)的對(duì)象,即可完成對(duì)數(shù)據(jù)庫(kù)的操作。
1.2JDBC驅(qū)動(dòng)程序
數(shù)據(jù)庫(kù)連接主要通過(guò)加載不同的驅(qū)動(dòng)程序來(lái)完成,JDBC驅(qū)動(dòng)程序類(lèi)型包括以下四種:
(1)JDBC-ODBC橋加ODBC驅(qū)動(dòng)程序:需要ODBC驅(qū)動(dòng)。
(2)本地API:需要驅(qū)動(dòng)程序的二進(jìn)制代碼支持(一部分Java編寫(xiě),一部分委托給數(shù)據(jù)庫(kù)客戶(hù)端代碼實(shí)現(xiàn))
(3)JDBC網(wǎng)絡(luò)純java驅(qū)動(dòng)程序:將JDBC轉(zhuǎn)換為與DBMS無(wú)關(guān)的網(wǎng)絡(luò)協(xié)議,又被某服務(wù)器轉(zhuǎn)換為一種DBMS協(xié)議,以操作各種數(shù)據(jù)庫(kù)(驅(qū)動(dòng)程序由中間件服務(wù)器提供)
(4)本地協(xié)議純java驅(qū)動(dòng)程序:將JDBC調(diào)用直接轉(zhuǎn)換成JDBC所使用的網(wǎng)絡(luò)協(xié)議 (全部由Java實(shí)現(xiàn),直接和數(shù)據(jù)庫(kù)訪問(wèn))

JDBC體系結(jié)構(gòu)
2.1數(shù)據(jù)庫(kù)連接
(1)加載驅(qū)動(dòng)(作用是把需要的驅(qū)動(dòng)程序加入內(nèi)存)。Class.forName("com. microsoft.sqlserver.jdbc.SQLServerDriver");這里使用的SQLServerDriver類(lèi)正是我們導(dǎo)入的sqljdbc.jar包中含有的類(lèi)。
(2)獲取連接(指定連接到哪個(gè)數(shù)據(jù)源)。Connection ct=DriverManager. getConnection("jdbc∶sqlserver∶//localhost∶1 433;DatabaseName=admin","sa","sa");local host指的是本機(jī),如果不是可以通過(guò)主機(jī)名或者ip地址指定,1433為端口號(hào)(要通過(guò)sql的配置管理設(shè)定端口號(hào)),admin為數(shù)據(jù)庫(kù)的名字,sa和sa位登陸sql的用戶(hù)名和密碼。2.2數(shù)據(jù)庫(kù)存取
(1)創(chuàng)建Statement。Statement stmt=ct. createStatement();Statement作用:主要用于發(fā)送SQL語(yǔ)句到數(shù)據(jù)庫(kù)。
(2)執(zhí)行。ResultSetrs=stmt.execute--Query(strSql);其中strSql為sql語(yǔ)句,查詢(xún)的結(jié)果存儲(chǔ)在rs中。
(3)根據(jù)需要顯示結(jié)果。調(diào)用rs的相關(guān)方法。
在實(shí)際案例中的數(shù)據(jù)訪問(wèn)很多都是重復(fù)的,因?yàn)閿?shù)據(jù)庫(kù)的操作無(wú)外乎增、刪、改、查,所以我們?cè)O(shè)計(jì)數(shù)據(jù)庫(kù)管理類(lèi)的重點(diǎn)就是盡量集成代碼,消除冗余,讓代碼更加簡(jiǎn)潔。
定義DataManager類(lèi)用于數(shù)據(jù)管理,首先定義所需變量。

DataManager類(lèi)中包括三個(gè)方法。
(1)打開(kāi)數(shù)據(jù)連接openData用于加載驅(qū)動(dòng)程序,連接數(shù)據(jù)庫(kù),初始化相關(guān)對(duì)象。
因?yàn)槿魏蔚臄?shù)據(jù)操作均需要先連接數(shù)據(jù)庫(kù),所以將連接打開(kāi)功能定義為一個(gè)方法可以較好的實(shí)現(xiàn)代碼的可重用性。
(2)執(zhí)行非查詢(xún)語(yǔ)句excute用于執(zhí)行刪除和添加功能,通過(guò)傳遞參數(shù)type和str來(lái)區(qū)分具體是什么操作。

(3)執(zhí)行查詢(xún)語(yǔ)句excuteQuery用于瀏覽所有記錄和顯示條件查詢(xún)的結(jié)果,根據(jù)傳入的字符串區(qū)分,傳遞的字符串為”*“時(shí)查詢(xún)所有記錄,否則查詢(xún)學(xué)號(hào)為參數(shù)的記錄。
本文主要介紹了在Java中如何對(duì)數(shù)據(jù)庫(kù)操作,系統(tǒng)提供了JDBC技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接和操作。用戶(hù)可以使用JDBC API中的DriverManager、Connection、Statement 和ResultSet類(lèi)來(lái)完成對(duì)數(shù)據(jù)庫(kù)的存取。重點(diǎn)介紹了如何定義數(shù)據(jù)管理類(lèi),從而實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增、刪、改、查等操作。