基本信息
- 項(xiàng)目名稱:
- ACCESS2003數(shù)據(jù)庫(kù)在Java程序中的應(yīng)用
- 來(lái)源:
- 第十二屆“挑戰(zhàn)杯”省賽作品
- 小類:
- 信息技術(shù)
- 簡(jiǎn)介:
- 在很多的實(shí)際應(yīng)用系統(tǒng)中,數(shù)據(jù)庫(kù)是必不可少的數(shù)據(jù)存儲(chǔ)方式,而ACCESS2003數(shù)據(jù)庫(kù)具有簡(jiǎn)單、高效、便于管理和使用的數(shù)據(jù)庫(kù)管理系統(tǒng)。本文簡(jiǎn)述在Java程序中如何應(yīng)用ACCESS2003數(shù)據(jù)庫(kù)的具體原理和方法。
- 詳細(xì)介紹:
- 在各種軟件應(yīng)用系統(tǒng)開發(fā)中,數(shù)據(jù)庫(kù)的應(yīng)用具有極其重要的意義,大部分軟件系統(tǒng)都需要利用各種數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)存儲(chǔ)和查詢各種結(jié)構(gòu)化的數(shù)據(jù)。在各種各樣的數(shù)據(jù)庫(kù)管理系統(tǒng)中,微軟的Access單機(jī)數(shù)據(jù)庫(kù)具有使用簡(jiǎn)單、方便、小巧等各種優(yōu)點(diǎn),在裝有微軟office的計(jì)算機(jī)系統(tǒng)中都會(huì)按照有Access。另一方面,在各種程序設(shè)計(jì)語(yǔ)言中,Java語(yǔ)言由于擁有面向?qū)ο蟆⒖缙脚_(tái)等各種優(yōu)良特性,而被很多開發(fā)人員所使用。因此,本文以一個(gè)學(xué)生學(xué)籍管理系統(tǒng)為例,講述Java程序中如何應(yīng)用Access 2003數(shù)據(jù)庫(kù)。 1 建立數(shù)據(jù)庫(kù) 在實(shí)現(xiàn)系統(tǒng)之前,首先需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)。具體對(duì)學(xué)生學(xué)籍管理系統(tǒng),我們先來(lái)建立學(xué)生學(xué)籍管理數(shù)據(jù)庫(kù)。首先安裝office2003,啟動(dòng)ACCESS2003,建立新數(shù)據(jù)庫(kù)學(xué)生學(xué)籍管理數(shù)據(jù)庫(kù)(xjgl.mdb),創(chuàng)建包含二個(gè)文本型字段 number和name的表,表名為student,錄入最好10個(gè)以上的記錄到student表中,不妨假設(shè)是保存在D盤根目錄下。然后,后續(xù)的問題是:如何在Java程序中讀取Access數(shù)據(jù)庫(kù)里面的字段?基本的方法有個(gè):有本地方法和遠(yuǎn)程訪問方法。 2 橋接驅(qū)動(dòng) 在創(chuàng)建好數(shù)據(jù)庫(kù)之后,程序運(yùn)行時(shí)需要對(duì)數(shù)據(jù)庫(kù)建立連接,才可以讀取數(shù)據(jù)庫(kù)中的內(nèi)容。下面,以數(shù)據(jù)庫(kù)管理系統(tǒng)ACCESS2003,編程軟件JCREATE、Java運(yùn)行環(huán)境jdk1.5.8為例來(lái)說明Java連接數(shù)據(jù)庫(kù)的過程。 2.1本地連接 JDBC(Java DataBase Connectivity)是Java數(shù)據(jù)庫(kù)連接的API。JDBC能完成與一個(gè)數(shù)據(jù)庫(kù)建立連接,然后向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,再處理數(shù)據(jù)庫(kù)返回的結(jié)果。JDBC在設(shè)計(jì)上和ODBC相似。JDBC和數(shù)據(jù)庫(kù)建立連接的一種方式是首先建立起一個(gè)JDBC-ODBC橋接器。 利用JDBC連接數(shù)據(jù)庫(kù)的過程是:打開控制面板 -> 管理工具 -> 數(shù)據(jù)源 (ODBC),選擇“系統(tǒng)DSN”,也可以選擇“用戶DSN”選項(xiàng)卡,系統(tǒng)的DSN對(duì)每個(gè)用戶都適用,可避免調(diào)試時(shí)出現(xiàn)的權(quán)限問題。單擊“添加”,選擇Microsoft Access Driver(*.mdb)選項(xiàng)。點(diǎn)擊"完成",彈出的對(duì)話框里將“數(shù)據(jù)源名”一項(xiàng)設(shè)為我們喜歡的名字,比如redsun。點(diǎn)“選擇”,找到“D:\ xjgl.mdb”文件,如此一個(gè)ODBC數(shù)據(jù)源就配置好了。 然后就是連接數(shù)據(jù)庫(kù)了這里要用到j(luò)ava.sql包中的Connection類。首先聲明一個(gè)Connection類對(duì)象,再用類DriverManager調(diào)用它的靜態(tài)方法getConnection創(chuàng)建這個(gè)連接: Connection con=DriverManager.getConnection("jdbc:odbc:數(shù)據(jù)源名字","數(shù)據(jù)源用戶名","數(shù)據(jù)源密碼"); 為防止連接出現(xiàn)異常,這里也要有個(gè)異常的處理,具體代碼是: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Class 是java.lang包中的一個(gè)類,通過調(diào)用它的靜態(tài)方法forName就可以建立橋接器。但建立橋接器時(shí)可能發(fā)生異常,這是我們所不想見到的,因此要捕獲這個(gè)異常: try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) { 異常捕獲 } 2.2遠(yuǎn)程連接 通過遠(yuǎn)程方式連接Access數(shù)據(jù)庫(kù)時(shí),需要使用rmijdbc。 我們首先從網(wǎng)上下載rmijdbc.jar, 加入系統(tǒng)環(huán)境變量,運(yùn)行java org.objectweb.rmijdbc.RJJdbcServer。這一步很重要,用來(lái)啟動(dòng)rmijdbc服務(wù)。否則,連接的時(shí)候報(bào)Connection refuse異常。 遠(yuǎn)程方式連接Access數(shù)據(jù)庫(kù)的具體步鄹是: 第一步:在服務(wù)器上建一個(gè)odbc數(shù)據(jù)源,指向一個(gè)學(xué)生學(xué)籍管理數(shù)據(jù)庫(kù).mdb文件; 第二步:客戶端連接代碼(假設(shè)數(shù)據(jù)庫(kù)服務(wù)器的IP地址為:192.168.0.201) Class.forName("org.objectweb.rmijdbc.Driver").newInstance(); String url = "jdbc:rmi://192.168.0.201/jdbc:odbc:redson"; 3 Java 程序源代碼 import java.sql.*; public class access{ public static void main(String args[]) { Connection con; Statement sql; ResultSet rs; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){ System.out.println(""+e); } try{ con=DriverManager.getConnection("jdbc:odbc:redsun","",""); sql=con.createStatement(); rs=sql.executeQuery("Select * FROM student"); while(rs.next()){ String number =rs.getString(1); String name =rs.getString(2); System.out.println("學(xué)號(hào):"+); System.out.println("姓名:"+name); } con.close(); } catch(SQLException el){} } } 4 幾點(diǎn)注意事項(xiàng) 在Java程序中訪問Access數(shù)據(jù)庫(kù)時(shí),需要注意幾個(gè)問題。 1)中文字段的查詢問題 Java用中文字段作為查詢條件時(shí),有時(shí)總是找不到數(shù)據(jù)集,但是Access2003數(shù)據(jù)庫(kù)中卻有符合條件的數(shù)據(jù)。這時(shí),如果是在jsp等網(wǎng)頁(yè)程序中訪問數(shù)據(jù)庫(kù),則需要添加如下一句代碼: <%@ page language="java" pageEncoding="GBK"%> 即在頁(yè)面中說明頁(yè)面采用的編碼是“GBK”。 如果是在程序中,則jdbc driver在接受查詢結(jié)果時(shí),應(yīng)該做 GBK到unicode 的轉(zhuǎn)換才對(duì)。在connector-j-3.0.7 里面的 readme, 我們可以找到一個(gè)解決方案: connection = DriverManager.getConnection ( " jdbc:rmi://192.168.0.201/jdbc:odbc/xjgl?user=root&password=&useUnicode=true&characterEncoding=GBK" ); 也就是告訴jdbc driver 強(qiáng)制按指定參數(shù)進(jìn)行轉(zhuǎn)碼。 2)中文數(shù)據(jù)的寫入問題 Java 在向數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí)不支持中文。具體的解決方法是:打開Access數(shù)據(jù)庫(kù),找到缺省的字符集default-character-set這一項(xiàng),將該數(shù)據(jù)庫(kù)的字符集改成gbk字符集。 另外的一種解決方法是:在將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)之前,將所有包含中文的字符串進(jìn)行字符轉(zhuǎn)換成ISO或UTF8;在將含有中文的字符串從數(shù)據(jù)庫(kù)里讀出來(lái)后在用程序轉(zhuǎn)換成GBK或GB2312。這種方法比較麻煩,每次寫入和讀出中文之前都必須調(diào)用這兩個(gè)方法。
作品專業(yè)信息
撰寫目的和基本思路
- 在Java程序應(yīng)用中數(shù)據(jù)庫(kù)的應(yīng)用對(duì)于信息技術(shù)提升起到很大作用,主要是根據(jù)JDBC方法實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問和操作。完成的主要任務(wù)有請(qǐng)求與數(shù)據(jù)庫(kù)建立連接;向數(shù)據(jù)庫(kù)發(fā)送各種請(qǐng)求;為結(jié)果集定義存儲(chǔ)應(yīng)用和數(shù)據(jù)類型;查詢結(jié)果;處理錯(cuò)誤;控制傳輸、提交及關(guān)閉連接等操作。
科學(xué)性、先進(jìn)性及獨(dú)特之處
- 在所有面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中,JAVA是比較簡(jiǎn)單易學(xué)易用易推廣的。其中所有的對(duì)象都是通過類來(lái)描繪的。通過JAVA程序中數(shù)據(jù)庫(kù)ACCESS2003,使得海量信息在網(wǎng)絡(luò)中更容易比共享和傳遞。
應(yīng)用價(jià)值和現(xiàn)實(shí)意義
- 面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言JAVA和中小型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)ACCESS2003是兩種不同數(shù)據(jù)處理方式。他們之間有很大的差異性,但是對(duì)于他們的選擇卻又往往反映出對(duì)于問題領(lǐng)域中的概念本質(zhì)的理解。對(duì)于設(shè)計(jì)者的反映是否正確、合理、有效,充分表現(xiàn)了兩者間的優(yōu)勢(shì)互補(bǔ)關(guān)系。對(duì)于信息技術(shù)推廣使用將起很大作用。
學(xué)術(shù)論文摘要
- 作品通過在很多的實(shí)際應(yīng)用系統(tǒng)中,數(shù)據(jù)庫(kù)是必不可少的數(shù)據(jù)存儲(chǔ)方式,而ACCESS2003數(shù)據(jù)庫(kù)具有簡(jiǎn)單、高效、便于管理和使用的數(shù)據(jù)庫(kù)管理系統(tǒng)。本文簡(jiǎn)述在Java程序中如何應(yīng)用ACCESS2003數(shù)據(jù)庫(kù)的具體原理和方法。
獲獎(jiǎng)情況
- 無(wú)
鑒定結(jié)果
- 無(wú)
參考文獻(xiàn)
- 1.程芳:關(guān)系數(shù)據(jù)庫(kù)ACCESS應(yīng)用, 網(wǎng)絡(luò)軟件, 2004(12) 2.陳安琪 許統(tǒng)邦:JAVA接口管理與實(shí)現(xiàn)初探,華南理工大學(xué)學(xué)報(bào)2006(8) 3. 靳恒清:《JAVA程序設(shè)計(jì)中接口技術(shù)》,甘肅科技縱橫,2010.5 4. 武傳海(譯):《Java編程基礎(chǔ)、應(yīng)用與實(shí)例》,人民郵電出版社,2005.10 5.劉萬(wàn)軍等: 《Java程序設(shè)計(jì)實(shí)踐教程》,清華大學(xué)出版社,2006.9
同類課題研究水平概述
- 面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言Java是一門很值得學(xué)習(xí)和研究的課程,特別是其中的抽象類和接口靈活應(yīng)用,在一定程度上反應(yīng)出設(shè)計(jì)水平的靈活性與可讀性還有執(zhí)行效率的高低。在Java語(yǔ)言中數(shù)據(jù)庫(kù)的應(yīng)用是支持信息產(chǎn)業(yè)化、網(wǎng)絡(luò)化的最佳有效途徑之一,正是由于這兩種理念的存在,才賦予了Java強(qiáng)大的面向?qū)ο竽芰Α?/dd>