JDBC連接MySQL數(shù)據(jù)庫及演示樣例
JDBC是Sun公司制定的一個能夠用Java語言連接數(shù)據(jù)庫的技術(shù)。
一、JDBC基礎(chǔ)知識
JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,能夠為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為數(shù)據(jù)庫開發(fā)者提供了一個標(biāo)準(zhǔn)的API,據(jù)此能夠構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)者能夠用純 Java API 編寫數(shù)據(jù)庫應(yīng)用程序,而且可跨平臺執(zhí)行,而且不受數(shù)據(jù)庫供應(yīng)商的限制。
1、跨平臺執(zhí)行:這是繼承了Java語言的“一次編譯,到處執(zhí)行”的特點;
2、不受數(shù)據(jù)庫供應(yīng)商的限制:巧妙在于JDBC設(shè)有兩種接口,一個是面向應(yīng)用程序?qū)樱渥饔檬鞘沟瞄_發(fā)者通過SQL調(diào)用數(shù)據(jù)庫和處理結(jié)果,而不須要考慮數(shù)據(jù)庫的提供商;還有一個是驅(qū)動程序?qū)樱幚砼c詳細(xì)驅(qū)動程序的交互,JDBC驅(qū)動程序能夠利用JDBC API創(chuàng)建Java程序和數(shù)據(jù)源之間的橋梁。應(yīng)用程序僅僅須要編寫一次,便能夠移到各種驅(qū)動程序上執(zhí)行。Sun提供了一個驅(qū)動管理器,數(shù)據(jù)庫供應(yīng)商——如MySQL、Oracle,提供的驅(qū)動程序滿足驅(qū)動管理器的要求就能夠被識別,就能夠正常工作。所以JDBC不受數(shù)據(jù)庫供應(yīng)商的限制。
JDBC API能夠作為連接Java應(yīng)用程序與各種關(guān)系數(shù)據(jù)庫的紐帶,在帶來方便的同一時候也有負(fù)面影響,下面是JDBC的優(yōu)、缺點。長處例如以下:
操作便捷:JDBC使得開發(fā)者不須要再使用復(fù)雜的驅(qū)動器調(diào)用命令和函數(shù);
可移植性強(qiáng):JDBC支持不同的關(guān)系數(shù)據(jù)庫,所以能夠使同一個應(yīng)用程序支持多個數(shù)據(jù)庫的訪問,僅僅要載入對應(yīng)的驅(qū)動程序就可以;
通用性好:JDBC-ODBC橋接驅(qū)動器將JDBC函數(shù)換成ODBC;
面向?qū)ο螅耗軌驅(qū)⒔?jīng)常使用的JDBC數(shù)據(jù)庫連接封裝成一個類,在使用的時候直接調(diào)用就可以。
缺點例如以下:
訪問數(shù)據(jù)記錄的速度受到一定程度的影響;
更改數(shù)據(jù)源困難:JDBC可支持多種數(shù)據(jù)庫,各種數(shù)據(jù)庫之間的操作必有不同,這就給更改數(shù)據(jù)源帶來了非常大的麻煩
二、JDBC連接數(shù)據(jù)庫的流程及其原理
1、在開發(fā)環(huán)境中載入指定數(shù)據(jù)庫的驅(qū)動程序。比如,接下來的實驗中,使用的數(shù)據(jù)庫是MySQL,所以須要去下載MySQL支持JDBC的驅(qū)動程序(最新的是:mysql-connector-java-5.1.18-bin.jar);而開發(fā)環(huán)境是MyEclipse,將下載得到的驅(qū)動程序載入進(jìn)開發(fā)環(huán)境中(詳細(xì)演示樣例的時候會解說怎樣載入)。
2、在Java程序中載入驅(qū)動程序。在Java程序中,能夠通過 “Class.forName(“指定數(shù)據(jù)庫的驅(qū)動程序”)” 方式來載入加入到開發(fā)環(huán)境中的驅(qū)動程序,比如載入MySQL的數(shù)據(jù)驅(qū)動程序的代碼為: Class.forName(“com.mysql.jdbc.Driver”)
3、創(chuàng)建數(shù)據(jù)連接對象:通過DriverManager類創(chuàng)建數(shù)據(jù)庫連接對象Connection。DriverManager類作用于Java程序和JDBC驅(qū)動程序之間,用于檢查所載入的驅(qū)動程序能否夠建立連接,然后通過它的getConnection方法,依據(jù)數(shù)據(jù)庫的URL、username和password,創(chuàng)建一個JDBC Connection 對象。如:Connection connection = DriverManager.geiConnection(“連接數(shù)據(jù)庫的URL", "username", "password”)。當(dāng)中,URL=協(xié)議名+IP地址(域名)+port+數(shù)據(jù)庫名稱;username和password是指登錄數(shù)據(jù)庫時所使用的username和password。詳細(xì)演示樣例創(chuàng)建MySQL的數(shù)據(jù)庫連接代碼例如以下:
Connection connectMySQL = DriverManager.geiConnection(“jdbc:mysql://localhost:3306/myuser","root" ,"root" );
4、創(chuàng)建Statement對象:Statement 類的主要是用于運(yùn)行靜態(tài) SQL 語句并返回它所生成結(jié)果的對象。通過Connection 對象的 createStatement()方法能夠創(chuàng)建一個Statement對象。比如:Statement statament = connection.createStatement(); 詳細(xì)演示樣例創(chuàng)建Statement對象代碼例如以下:
Statement statamentMySQL =connectMySQL.createStatement();
5、調(diào)用Statement對象的相關(guān)方法運(yùn)行相相應(yīng)的 SQL 語句:通過execuUpdate()方法用來數(shù)據(jù)的更新,包含插入和刪除等操作,比如向staff表中插入一條數(shù)據(jù)的代碼:
statement.excuteUpdate( "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)" + " VALUES ('Tom1', 321, 'M', 'china','Personnel','3','3000' ) ") ;
通過調(diào)用Statement對象的executeQuery()方法進(jìn)行數(shù)據(jù)的查詢,而查詢結(jié)果會得到 ResulSet對象,ResulSet表示運(yùn)行查詢數(shù)據(jù)庫后返回的數(shù)據(jù)的集合,ResulSet對象具有能夠指向當(dāng)前數(shù)據(jù)行的指針。通過該對象的next()方法,使得指針指向下一行,然后將數(shù)據(jù)以列號或者字段名取出。假設(shè)當(dāng)next()方法返回null,則表示下一行中沒有數(shù)據(jù)存在。使用演示樣例代碼例如以下:
ResultSet resultSel = statement.executeQuery( "select * from staff" );
6、關(guān)閉數(shù)據(jù)庫連接:使用完數(shù)據(jù)庫或者不須要訪問數(shù)據(jù)庫時,通過Connection的close() 方法及時關(guān)閉數(shù)據(jù)連接。
三、JDBC應(yīng)用演示樣例實驗
實驗內(nèi)容:使用phpMyAdmin在MySQL中創(chuàng)建數(shù)據(jù)庫(myuser),并加入實驗所需的數(shù)據(jù)(新建staff表,加入一些記錄);編寫Java程序,利用JDBC連接在MySQL中創(chuàng)建好的數(shù)據(jù)庫(myuser),對staff表格進(jìn)行插入、更新、刪除和查詢等操作。
實驗環(huán)境及開發(fā)工具:Win7操作系統(tǒng);jdk1.6.0_26;XAMPP1.7.7(MySQL 5.1, phpMyAdmin);MyEclipse 8.5
實驗環(huán)境的搭建:可參考我的博客
Java環(huán)境搭配:http://blog.csdn.net/cxwen78/article/details/6400798;
windows系統(tǒng)XAMPP安裝配置使用:http://blog.csdn.net/cxwen78/article/details/6847927
實驗過程及步驟:
1、下載MySQL支持JDBC的驅(qū)動程序:假設(shè)已經(jīng)有了,可跳過這一步。前往MySQL官網(wǎng)(http://www.mysql.com/products/connector/ )下載驅(qū)動程序,,MySQL針對不同的平臺提供了不同的連接器,我們須要的是DBC Driver for MySQL (Connector/J),例如以下圖所看到的,點擊 Download 跟著站點的引導(dǎo)進(jìn)行下載。打開下載得到的壓縮包(mysql-connector-java-5.1.18.zip),將當(dāng)中的Java包(mysql-connector-java-5.1.18-bin.jar),拷貝到MySQL文件夾下(僅是為了方便才放到這里),以備載入驅(qū)動程序時使用。

2、創(chuàng)建數(shù)據(jù)庫:使用phpMyAdmin,登錄MySQL,創(chuàng)建數(shù)據(jù)庫myuser,并在當(dāng)中插入一個名為staff的表格。并加入一些數(shù)據(jù),操作步驟如圖,登錄進(jìn)去MySQL數(shù)據(jù)庫后:
1)創(chuàng)建數(shù)據(jù)庫,名稱為myuser,編碼為utf8_general_ci(支持中文);
2)新建表格,名稱為staff,表格有8個字段;
3)8個字段的設(shè)置,包含名稱、類型、值的長度、初始值、編碼等等(點擊查看大圖);
4)加入成功后,查看的staff表格情況:
5)往表格中插入一些實驗所需數(shù)據(jù),須要插入兩條,一個是員工lucy的,還有l(wèi)ili的:
3、在MyEclips中創(chuàng)建項目并在項目中加入MySQL驅(qū)動程序:創(chuàng)建的項目類型能夠是Java項目或者是Java Web項目都能夠。這里創(chuàng)建的是Web項目,項目名稱能夠隨便取,我命名為“JavaWebChp07”。創(chuàng)建成功后將步驟1里下載得到的MySQL驅(qū)動程序包(mysql-connector-java-5.1.18-bin.jar)加入到project的Build path中,加入過程如圖所看到的:
posted on 2014-09-24 15:39 順其自然EVO 閱讀(825) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄