版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于RFID的庫存管理系統(tǒng)</p><p> Inventory Management System Based on RFID</p><p><b> 摘要</b></p><p> 射頻識別(Radio Frequency Identification, RFID)作為一種快速、實(shí)時(shí)、準(zhǔn)確采集與處理信息的高新枝
2、術(shù)和信息標(biāo)準(zhǔn)化的基礎(chǔ),被列為本世紀(jì)十人重要技術(shù)之一。RFID技術(shù)已逐漸成為企業(yè)提高物流供應(yīng)鏈管理水平,降低成本,企業(yè)管理信息化,參與國際經(jīng)濟(jì)大循環(huán),增強(qiáng)企業(yè)核心競爭力不可缺少的技術(shù)工具和手段。</p><p> 本文首先介紹了了RFID的系統(tǒng)組成,工作原理,發(fā)展歷史,技術(shù)標(biāo)準(zhǔn)現(xiàn)狀以及RFID在管理中的應(yīng)用。然后通過對ODBC和JDBC的討論,確定了兩種中間件的特點(diǎn)。本文利用JBuilder 9.0,SQL Se
3、rver 2000,JDBC設(shè)計(jì)了基于RFID的庫存管理系統(tǒng)。該系統(tǒng)分為登陸模塊,查詢模塊,出庫模塊,入庫模塊。 文中詳細(xì)列出了各個(gè)模塊的程序流程圖,完成帶有RFID的貨物在庫存中的流動(dòng)模擬。其中程序的核心部分是實(shí)現(xiàn)了數(shù)據(jù)庫的建立和針對數(shù)據(jù)庫的查詢等操作。</p><p> 本文的最后列寫出了對于RFID發(fā)展前景的展望。</p><p> 關(guān)鍵詞:RFID,庫存管理,JDBC,SQL
4、Server 2000</p><p><b> Abstract</b></p><p> As a speedy, real-time, accurate information collection and procession technology Radio Frequency Identification has been ranked as one
5、of the most important technology in this century. RFID has gradually become a necessary technological means for manufacture to improve supply chain management, reduce cost, realize management information, joins in intern
6、ational economy circle, strength enterprises’ core compatibility.</p><p> In this article, author first introduced RFID’s making up, working principle, improving history, the technical standard actuality an
7、d the application in the management. Then by discussing ODBC and JDBC, the author found out the characters of these two databases. In this article, author using JBuilder9.0, SQL Server 2000, JDBC designed a warehouse man
8、agement system based on RFID. This system is made up with the login module, query module, shipment module. The flowcharts of these modules are detai</p><p> In the end, author listed the prospect of the dev
9、elopment of RFID.</p><p> Keyboard: RFID,Inventory management,JDBC,SQL Server 2000 </p><p><b> 目錄</b></p><p><b> 摘要2</b></p><p> Abstract
10、3</p><p><b> 1.選題背景5</b></p><p> 1.1 RFID簡介5</p><p> 1.2 RFID發(fā)展歷史5</p><p> 1.3 RFID的系統(tǒng)組成6</p><p> 1.4 RFID工作原理6</p><p>
11、 1.5 RFID技術(shù)標(biāo)準(zhǔn)現(xiàn)狀7</p><p> 1.6 RFID在管理中的應(yīng)用10</p><p> 2 庫存管理系統(tǒng)方法論證12</p><p> 2.1 ODBC12</p><p> 2.2 JDBC13</p><p> 2.3 ODBC和JDBC的比較19</p>&l
12、t;p> 3. RFID庫存管理系統(tǒng)設(shè)計(jì)過程21</p><p> 3.1管理系統(tǒng)設(shè)計(jì)前提21</p><p> 3.2程序使用的軟件工具21</p><p> 3.3數(shù)據(jù)庫類型的選定22</p><p> 3.4數(shù)據(jù)庫的建立和連接23</p><p> 3.5系統(tǒng)流程25</p&g
13、t;<p> 4. 總結(jié)與展望40</p><p><b> 致謝41</b></p><p><b> 參考文獻(xiàn):42</b></p><p><b> 1.選題背景</b></p><p> 1.1 RFID簡介</p><
14、p> RFID射頻識別是一種非接觸式的自動(dòng)識別技術(shù),它通過射頻信號自動(dòng)識別目標(biāo)對象并獲取相關(guān)數(shù)據(jù),識別工作無須人工干預(yù),可工作于各種惡劣環(huán)境。RFID技術(shù)可識別高速運(yùn)動(dòng)物體并可同時(shí)識別多個(gè)標(biāo)簽,操作快捷方便。 </p><p> 埃森哲實(shí)驗(yàn)室首席科學(xué)家弗格森認(rèn)為RFID是一種突破性的技術(shù):"第一,可以識別單個(gè)的非常具體的物體,而不是像條形碼那樣只能識別一類物體;第二,其采用無線電射頻,可以透過
15、外部材料讀取數(shù)據(jù),而條形碼必須靠激光來讀取信息;第三,可以同時(shí)對多個(gè)物體進(jìn)行識讀,而條形碼只能一個(gè)一個(gè)地讀。此外,儲存的信息量也非常大。[1]</p><p> 1.2 RFID發(fā)展歷史 </p><p> RFID技術(shù)的發(fā)展最早可以追溯至第二次世界大戰(zhàn)時(shí)期,那時(shí)它被用來在空中作戰(zhàn)行動(dòng)中進(jìn)行敵我識別。從歷史上看,RFID技術(shù)的發(fā)展基本可按10年期劃分為幾個(gè)階段(參見表1)。因此RFID
16、并不是一個(gè)嶄新的技術(shù)。從分類上看,因?yàn)榻?jīng)過多年的發(fā)展,13.56MHz以下的RFID技術(shù)已相對成熟,目前業(yè)界最關(guān)注的是位于中高頻段的RFID技術(shù),特別是860MHz~960MHz(UHF頻段)的遠(yuǎn)距離RFID技術(shù)發(fā)展最快;而2.45GHz和5.8GHz頻段由于產(chǎn)品擁擠,易受干擾,技術(shù)相對復(fù)雜,其相關(guān)的研究和應(yīng)用仍處于探索的階段。</p><p> 表1-1 RFID技術(shù)發(fā)展的歷程表 </p>&l
17、t;p> 1.3 RFID的系統(tǒng)組成</p><p> 一個(gè)典型的RFID系統(tǒng)一般由RFID標(biāo)簽、讀寫器以及計(jì)算機(jī)系統(tǒng)等部分組成。其中RFID標(biāo)簽中一般保存有約定格式的編碼數(shù)據(jù),用以唯一標(biāo)識標(biāo)簽所附著的物體。與傳統(tǒng)的識別方式相比,RFID技術(shù)無需直接接觸、無需光學(xué)可視、無需人工干預(yù)即可完成信息輸入和處理,且操作方便快捷。能夠廣泛應(yīng)用于生產(chǎn)、物流、交通、運(yùn)輸、醫(yī)療、防偽、跟蹤、設(shè)備和資產(chǎn)管理等需要收集和處
18、理數(shù)據(jù)的應(yīng)用領(lǐng)域,并被認(rèn)為是條形碼標(biāo)簽的未來替代品。 </p><p> 在具體的應(yīng)用過程中,根據(jù)不同的目的和環(huán)境,RFID系統(tǒng)的組成會(huì)有所不同,但從其工作原理來看,系統(tǒng)一般都由信號發(fā)射機(jī)、信號接收機(jī)、發(fā)射接收天線三部分組成。(1) 信號發(fā)射機(jī):在RFID 系統(tǒng)中,信號發(fā)射機(jī)為了不同的應(yīng)用目的,會(huì)以不同的形式存在,典型的形式是標(biāo)簽。標(biāo)簽相當(dāng)于條形碼技術(shù)中的條形碼符號,用來存儲需要識別傳輸?shù)男畔?。另外,與條形碼不
19、同的是,標(biāo)簽必須能夠自動(dòng)或在外力的作用下,把存儲的信息主動(dòng)發(fā)射出去。標(biāo)簽一般是帶有線圈、天線、存儲器與控制系統(tǒng)的低電集成電路。(2) 信號接收機(jī):RFID系統(tǒng)中,信號接收機(jī)一般叫做閱讀器。閱讀器基本的功能就是提供與標(biāo)簽進(jìn)行數(shù)據(jù)傳輸?shù)耐緩?。另外,閱讀器還提供相當(dāng)復(fù)雜的信號狀態(tài)控制、奇偶錯(cuò)誤校驗(yàn)與更正功能等。(3) 發(fā)射接收天線:天線是標(biāo)簽與閱讀器之間傳輸數(shù)據(jù)的發(fā)射、接收裝置。RFID技術(shù)用于需要跟蹤眾多貨物資源、而人手又有限的倉庫管理中是
20、非?,F(xiàn)實(shí)的。因?yàn)镽FID系統(tǒng)基于人們熟悉的Windows 或UNIX 平臺,所以通常易于管理。</p><p> 1.4 RFID工作原理</p><p> RFID系統(tǒng)的工作原理:讀寫器通過天線發(fā)送出一定頻率的射頻信號;當(dāng)RFID標(biāo)簽進(jìn)入讀寫器工作場時(shí),其天線產(chǎn)生感應(yīng)電流,從而RFID標(biāo)簽獲得能量被激活并向讀寫器發(fā)送出自身編碼等信息;讀寫器接收到來自標(biāo)簽的載波信號,對接收的信號進(jìn)行解
21、調(diào)和解碼后送至計(jì)算機(jī)主機(jī)進(jìn)行處理;計(jì)算機(jī)系統(tǒng)根據(jù)邏輯運(yùn)算判斷該標(biāo)簽的合法性,針對不同的設(shè)定做出相應(yīng)的處理和控制,發(fā)出指令信號;RFID標(biāo)簽的數(shù)據(jù)解調(diào)部分從接收到的射頻脈沖中解調(diào)出數(shù)據(jù)并送到控制邏輯,控制邏輯接收指令完成存儲、發(fā)送數(shù)據(jù)或其他操作。[2]</p><p> 1.5 RFID技術(shù)標(biāo)準(zhǔn)現(xiàn)狀 </p><p> 1.5.1 ISO制定的RFID標(biāo)準(zhǔn)體系</p>&l
22、t;p> RFID標(biāo)準(zhǔn)化工作最早可以追溯到20世紀(jì)90年代。1995年國際標(biāo)準(zhǔn)化組織ISO/IEC聯(lián)合技術(shù)委員會(huì)JTCl設(shè)立了子委員會(huì)SC31(以下簡稱SC31),負(fù)責(zé)RFID標(biāo)準(zhǔn)化研究工作。SC31委員會(huì)由來自各個(gè)國家的代表組成,如英國的BSI IST34委員、歐洲CEN TC225成員。他們既是各大公司內(nèi)部咨詢者,也是不同公司利益的代表者。因此在ISO標(biāo)準(zhǔn)化制定過程中,有企業(yè)、區(qū)域標(biāo)準(zhǔn)化組織和國家三個(gè)層次的利益代表者。SC3
23、1子委員會(huì)負(fù)責(zé)RFID標(biāo)準(zhǔn)可以分為四個(gè)方面:數(shù)據(jù)標(biāo)準(zhǔn)(如編碼標(biāo)準(zhǔn)ISO/IEC 15691、數(shù)據(jù)協(xié)議ISO/IEC 15692、ISO/IEC 15693,解決了應(yīng)用程序、標(biāo)簽和空中接口多樣性的要求,提供了一套通用的通信機(jī)制)、空中接口標(biāo)準(zhǔn)(ISO/IEC 18000系列)、測試標(biāo)準(zhǔn)(性能測試ISO/IEC 18047和一致性測試標(biāo)準(zhǔn)ISO/IEC 18046)、實(shí)時(shí)定位(RTLS)(ISO/IEC 24730系列應(yīng)用接口與空中接口通信
24、標(biāo)準(zhǔn))方面的標(biāo)準(zhǔn)。 </p><p> 這些標(biāo)準(zhǔn)涉及到RFID標(biāo)簽、空中接口、測試標(biāo)準(zhǔn)、讀寫器與到應(yīng)用程序之間的數(shù)據(jù)協(xié)議,它們考慮的是所有應(yīng)用領(lǐng)域的共性要求。</p><p> ISO對于RFID的應(yīng)用標(biāo)準(zhǔn)是由應(yīng)用相關(guān)的子委員會(huì)制定。RFID在物流供應(yīng)鏈領(lǐng)域中的應(yīng)用方面標(biāo)準(zhǔn)由ISO TC 122/104 聯(lián)合工作組負(fù)責(zé)制定, 包括ISO17358應(yīng)用要求、ISO 17363貨運(yùn)
25、集裝箱、ISO 17364裝載單元、ISO 17365運(yùn)輸單元、ISO 17366產(chǎn)品包裝、ISO 17367產(chǎn)品標(biāo)簽。RFID在動(dòng)物追蹤方面的標(biāo)準(zhǔn)由ISO TC 23 SC19來制定,包括ISO 11784/11785動(dòng)物RFID畜牧業(yè)的應(yīng)用,ISO 14223動(dòng)物RFID畜牧業(yè)的應(yīng)用-高級標(biāo)簽的空中接口、協(xié)議定義。</p><p> 從ISO制訂的RFID標(biāo)準(zhǔn)內(nèi)容來說,RFID應(yīng)用標(biāo)準(zhǔn)是在RFID編碼、空中
26、接口協(xié)議、讀寫器協(xié)議等基礎(chǔ)標(biāo)準(zhǔn)之上,針對不同使用對象,確定了使用條件、標(biāo)簽尺寸、標(biāo)簽粘貼位置、數(shù)據(jù)內(nèi)容格式、使用頻段等方面特定應(yīng)用要求的具體規(guī)范,同時(shí)也包括數(shù)據(jù)的完整性、人工識別等其他一些要求。通用標(biāo)準(zhǔn)提供了一個(gè)基本框架,應(yīng)用標(biāo)準(zhǔn)是對它的補(bǔ)充和具體規(guī)定。這一標(biāo)準(zhǔn)制訂思想,既保證了RFID技術(shù)具有互通與互操作性,又兼顧了應(yīng)用領(lǐng)域的特點(diǎn),能夠很好地滿足應(yīng)用領(lǐng)域的具體要求。</p><p> 1.5.2 EPCglo
27、ba l 制定的</p><p> RFID標(biāo)準(zhǔn)體系與ISO 通用性RFID標(biāo)準(zhǔn)相比,EPCglobal標(biāo)準(zhǔn)體系是面向物流供應(yīng)鏈領(lǐng)域,可以看成是一個(gè)應(yīng)用標(biāo)準(zhǔn)。EPCglobal的目標(biāo)是解決供應(yīng)鏈的透明性和追蹤性,透明性和追蹤性是指供應(yīng)鏈各環(huán)節(jié)中所有合作伙伴都能夠了解單件物品的相關(guān)信息,如位置、生產(chǎn)日期信息。為此EPCglobal制定了EPC編碼標(biāo)準(zhǔn),它可以實(shí)現(xiàn)對所有物品提供單件惟一標(biāo)識;也制定了空中接口協(xié)議、讀
28、寫器協(xié)議。這些協(xié)議與ISO標(biāo)準(zhǔn)體系類似。在空中接口協(xié)議方面,目前EPCglobal的策略盡量與ISO兼容,如C1Gen2 UHF RFID標(biāo)準(zhǔn)遞交ISO將成為ISO 18000 6C標(biāo)準(zhǔn)。但EPCglobal空中接口協(xié)議有它的局限范圍,僅僅關(guān)注UHF 860~930MHz。</p><p> 除了信息采集以外,EPCglobal非常強(qiáng)調(diào)供應(yīng)鏈各方之間的信息共享,為此制定了信息共享的物聯(lián)網(wǎng)相關(guān)標(biāo)準(zhǔn),包括EPC中間
29、件規(guī)范、對象名解析服務(wù)ONS(Object Naming Service)、物理標(biāo)記語言(PhysicalMarkup Language)。這樣從信息的發(fā)布、信息資源的組織管理、信息服務(wù)的發(fā)現(xiàn)以及大量訪問之間的協(xié)調(diào)等方面作出規(guī)定。“物聯(lián)網(wǎng)”的信息量和信息訪問規(guī)模大大超過普通的因特網(wǎng)?!拔锫?lián)網(wǎng)”系列標(biāo)準(zhǔn)是根據(jù)自身的特點(diǎn)參照因特網(wǎng)標(biāo)準(zhǔn)制訂的?!拔锫?lián)網(wǎng)”是基于因特網(wǎng)的,與因特網(wǎng)具有良好的兼容性。</p><p> 物
30、聯(lián)網(wǎng)標(biāo)準(zhǔn)是EPCglobal所特有的,ISO僅僅考慮自動(dòng)身份識別與數(shù)據(jù)采集的相關(guān)標(biāo)準(zhǔn),數(shù)據(jù)采集以后如何處理、共享并沒有作規(guī)定。物聯(lián)網(wǎng)是未來的一個(gè)目標(biāo),對當(dāng)前應(yīng)用系統(tǒng)建設(shè)來說具有指導(dǎo)意義。</p><p> 1.5.3 日本UID制定的RFID標(biāo)準(zhǔn)體系</p><p> 日本泛在中心制定RFID相關(guān)標(biāo)準(zhǔn)的思路類似于EPCglobal,目標(biāo)也是構(gòu)建一個(gè)完整的標(biāo)準(zhǔn)體系,編碼體系、空中接口協(xié)議
31、到泛在網(wǎng)絡(luò)體系結(jié)構(gòu),但是每一個(gè)部分的具體內(nèi)容存在差異。</p><p> 為了制定具有自主知識產(chǎn)權(quán)的RFID標(biāo)準(zhǔn),在編碼方面制定了ucode編碼體系,它能夠兼容日本已有的編碼體系,同時(shí)也能兼容國際其他的編碼體系。在空中接口方面積極參與ISO的標(biāo)準(zhǔn)制定工作,也盡量考慮與ISO相關(guān)標(biāo)準(zhǔn)兼容。在信息共享方面主要依賴于日本的泛在網(wǎng)絡(luò)它可以獨(dú)立于因特網(wǎng)實(shí)現(xiàn)信息的共享。</p><p> 泛在網(wǎng)絡(luò)
32、與EPCglobal的物聯(lián)網(wǎng)還是有區(qū)別的。EPC采用業(yè)務(wù)鏈的方式,面向企業(yè),面向產(chǎn)品信息的流動(dòng)(物聯(lián)網(wǎng)),比較強(qiáng)調(diào)與互聯(lián)網(wǎng)的結(jié)合。UID采用扁平式信息采集分析方式,強(qiáng)調(diào)信息的獲取與分析,比較強(qiáng)調(diào)前端的微型化與集成。</p><p> 1.5.4 三大標(biāo)準(zhǔn)體系空中接口協(xié)議的比較</p><p> 目前,ISO/IEC 18000、EPCglobal、日本UID三個(gè)空中接口協(xié)議正在完善中。
33、這三個(gè)標(biāo)準(zhǔn)相互之間并不兼容,主要差別在通訊方式、防沖突協(xié)議和數(shù)據(jù)格式這三個(gè)方面,在技術(shù)上差距其實(shí)并不大。</p><p> 這三個(gè)標(biāo)準(zhǔn)都按照RFID的工作頻率分為多個(gè)部分。在這些頻段中,以13。56MHz頻段的產(chǎn)品最為成熟,處于860~960MHz內(nèi)的UHF頻段的產(chǎn)品因?yàn)楣ぷ骶嚯x遠(yuǎn)且最可能成為全球通用的頻段而最受重視,發(fā)展最快。</p><p> ISO/IEC 18000標(biāo)準(zhǔn)是最早開
34、始制定的關(guān)于RFID的國際標(biāo)準(zhǔn),按頻段被劃分為7個(gè)部分。目前支持ISO/IEC 18000標(biāo)準(zhǔn)的RFID 產(chǎn)品最多。EPCglobal是由UCC 和EAN兩大組織聯(lián)合成立、吸收了麻省理工AutoID中心的研究成果后推出的系列標(biāo)準(zhǔn)草案。EPCGlobal最重視UHF頻段的RFID產(chǎn)品,極力推廣基于EPC編碼標(biāo)準(zhǔn)的RFID產(chǎn)品。目前,EPC Global標(biāo)準(zhǔn)的推廣和發(fā)展十分迅速,許多大公司如沃爾瑪?shù)榷际荅PC標(biāo)準(zhǔn)的支持者。日本的泛在中心(U
35、biquitous ID)一直致力于本國標(biāo)準(zhǔn)的RFID產(chǎn)品開發(fā)和推廣,拒絕采用美國的EPC編碼標(biāo)準(zhǔn)。與美國大力發(fā)展UHF頻段RFID不同的是,日本對2。4GHz 微波頻段的RFID似乎更加青睞,目前日本已經(jīng)開始了許多2。4GHz RFID產(chǎn)品的實(shí)驗(yàn)和推廣工作。標(biāo)準(zhǔn)的制定面臨越來越多的知識產(chǎn)權(quán)糾紛。不同的企業(yè)都想為自己的利益努力。同時(shí),EPC在努力成為ISO的標(biāo)準(zhǔn),ISO最終如何接受EPC的RFID標(biāo)準(zhǔn),還有待觀望。全球標(biāo)準(zhǔn)的不統(tǒng)一,硬件
36、產(chǎn)品的兼容方面必然不理想,阻礙應(yīng)用。[3]</p><p> 1.6 RFID在管理中的應(yīng)用</p><p> 電子標(biāo)簽因?yàn)槠渚哂蟹罌_撞性、封裝任意性、使用壽命長、可重復(fù)利用等特點(diǎn),適合應(yīng)用于現(xiàn)在科學(xué)的庫存管理系統(tǒng)中。 現(xiàn)在的庫存管理系統(tǒng)通常使用條碼標(biāo)簽或是人工庫存管理單據(jù)書寫等方式支持自有的庫存管理。但是條碼的易復(fù)制、不防污、不防潮等特點(diǎn),還有人工書寫單據(jù)的煩瑣性,容易造成人為損失等
37、無法避免的缺點(diǎn),使得現(xiàn)在國內(nèi)的庫存管理供應(yīng)鏈?zhǔn)冀K存在著缺陷。隨著電子標(biāo)簽這一最新科技產(chǎn)品的投入應(yīng)用,可以從根本上解決上述的問題。</p><p> 用電子標(biāo)簽支持現(xiàn)今的庫存管理系統(tǒng)的優(yōu)勢在于:</p><p> 有效管理貨物裝箱作業(yè)。(減少損失)</p><p><b> 信息收集自動(dòng)化。</b></p><p>
38、<b> 產(chǎn)品來源之核對。</b></p><p> 每階段制程中產(chǎn)品品質(zhì)之稽核。</p><p> 可更改電子標(biāo)簽上的資料 而無須更改產(chǎn)品包裝。</p><p> 有效管理裝貨(減少丟失)。</p><p> 自動(dòng)化結(jié)果便能更有效品質(zhì)監(jiān)督。</p><p> 可以全程跟蹤庫存貨物的物
39、流情況,將損失和失誤降低到最低點(diǎn)。</p><p> 下面是國內(nèi)外常見的RFID管理的應(yīng)用:</p><p> 1.6.1 車輛自動(dòng)識別管理</p><p> 高速公路自動(dòng)收費(fèi)系統(tǒng)是RFID 技術(shù)最成功的應(yīng)用之一。目前ETC(Electronic Toll Collection,不停車收費(fèi)系統(tǒng))是世界上最先進(jìn)的路橋收費(fèi)方式。當(dāng)安裝在車輛上的車載電子標(biāo)簽進(jìn)收費(fèi)站
40、時(shí),收費(fèi)站上的無線射頻裝置會(huì)自動(dòng)激活車載電子標(biāo)簽,并完成相互間的認(rèn)證識別過程,能將有關(guān)車輛信息輸入計(jì)算機(jī)收費(fèi)處理系統(tǒng),同時(shí)利用計(jì)算機(jī)聯(lián)網(wǎng)技術(shù)與銀行進(jìn)行結(jié)算,完成費(fèi)用的收繳工作,從而達(dá)到無需停車即可交納路橋費(fèi)的目的。ETC 是國際上正在努力開發(fā)并推廣的一種用于公路、大橋和隧道的電子自動(dòng)收費(fèi)系統(tǒng)。該技術(shù)在國外已有較長的發(fā)展歷史,美國、歐洲等許多國家和地區(qū)的電子收費(fèi)系統(tǒng)已經(jīng)局部聯(lián)網(wǎng)并逐步形成規(guī)模效益。[4]</p><p&
41、gt;<b> 1.6.2倉儲管理</b></p><p> 將RFID 系統(tǒng)用于智能倉庫貨物管理,有效地解決了倉庫與貨物流動(dòng)有關(guān)的信息管理。它不但增加了一天內(nèi)處理貨物的件數(shù),而且還監(jiān)看這些貨物的一切信息。射頻天線安置在倉庫相關(guān)的各個(gè)部位和貨物所通過的倉庫大門邊上,每輛叉車上都有讀寫器和天線,每個(gè)貨物都貼有電子標(biāo)簽,所有電子標(biāo)簽信息都被存儲在倉庫的中心計(jì)算機(jī)里,該貨物的有關(guān)信息都能在計(jì)算
42、機(jī)里查到。當(dāng)貨物被裝走運(yùn)往別處時(shí),相關(guān)的讀寫器就能識別并告知計(jì)算中心它被放在哪輛拖車上。這樣,管理中心可以實(shí)時(shí)地了解到已經(jīng)入庫了多少貨物和發(fā)送了多少貨物或者貨物在倉庫轉(zhuǎn)移的情況,并可自動(dòng)識別貨物,確定貨物的位置。</p><p> 2 庫存管理系統(tǒng)方法論證</p><p> 為了有利于庫存系統(tǒng)的webserver發(fā)布,這里使用的編程工具為java。庫存管理最重要,最核心的部分是與數(shù)據(jù)庫
43、的連接與對數(shù)據(jù)庫的操作。這里我們使用的 SQL Server 2000 數(shù)據(jù)庫軟件。</p><p> 這里涉及到一個(gè)ODBC和JDBC的問題,下面我們來論述下這兩種數(shù)據(jù)庫的優(yōu)缺點(diǎn)。</p><p><b> 2.1 ODBC </b></p><p> 2.1.1 ODBC簡介</p><p> O D B C
44、 的基本思想是為用戶提供簡單、標(biāo)準(zhǔn)、透明的數(shù)據(jù)庫連接的公共編程接口,開發(fā)廠商根據(jù)ODBC 的標(biāo)準(zhǔn)去實(shí)現(xiàn)底層的驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)對用戶是透明的,并允許根據(jù)不同的DBMS 采用不同的技術(shù)加以優(yōu)化實(shí)現(xiàn),這就利于不斷吸收新的技術(shù)而趨完善。 ODBC 出現(xiàn)以后,用戶安裝不同的DBMS 驅(qū)動(dòng)就可用同樣的SQL 語句實(shí)現(xiàn)在不同DBMS 上進(jìn)行同樣的操作,而且無需預(yù)編譯。ODBC 帶來了數(shù)據(jù)庫連接方式的變革。在傳統(tǒng)方式中,開發(fā)人員要熟悉多個(gè)D B M
45、S 及其API ,一旦DBMS 端出現(xiàn)變動(dòng),則往往導(dǎo)致用戶端系統(tǒng)重新編建或者源代碼的修改,這給開發(fā)和維護(hù)工作帶來了很大困難。在ODBC 方式中,不管底層網(wǎng)絡(luò)環(huán)境如何,也無論采用何種DBMS,用戶在程序中都使用同一套標(biāo)準(zhǔn)代碼,無需逐個(gè)了解各DBMS 及其API 的特點(diǎn),源程序不因底層的變化而重新編建或修改,從而減輕了開發(fā)維護(hù)的工作量,縮短了開發(fā)周期。</p><p> 2.1.2 ODBC的特點(diǎn):</p&g
46、t;<p> (1) 使用戶程序有很高的互操作性,相同的目標(biāo)代碼適用于不同的D B M S 。</p><p> (2) 由于ODBC 的開放性,它為程序集成提供了便利,為客戶機(jī)/ 服務(wù)器結(jié)構(gòu)提供了技術(shù)支持。</p><p> (3) 由于應(yīng)用與底層網(wǎng)絡(luò)環(huán)境和DBMS 分開,簡化了開發(fā)維護(hù)上的困難。</p><p> 2.1.3 ODBC 的體
47、系結(jié)構(gòu)和實(shí)現(xiàn)</p><p> O D B C 是依靠分層結(jié)構(gòu)來實(shí)現(xiàn)的,如此可保證其標(biāo)準(zhǔn)性和開放性。它共分為四層:應(yīng)用程序、驅(qū)動(dòng)程序管理器、驅(qū)動(dòng)程序和數(shù)據(jù)源。下面我們詳細(xì)介紹各層的功能。</p><p> (1) 應(yīng)用程序?qū)?Application)使用ODBC 接口的應(yīng)用程序可執(zhí)行以下任務(wù):</p><p> 1)請求與數(shù)據(jù)源的連接和會(huì)話(SQLConnec
48、t);2)向數(shù)據(jù)源發(fā)送SQL 請求(SQLExecDirct 或SQLExecute); 3)對SQL 請求的結(jié)果定義存儲區(qū)和數(shù)據(jù)格式;4)請求結(jié)果;5)處理錯(cuò)誤;6)如果需要,把結(jié)果返回給用戶; 7)對事務(wù)進(jìn)行控制,請求執(zhí)行或回退操作(SQLTransact); 8)終止對數(shù)據(jù)源的連接(SQLDisconnect)。</p><p> (2) 驅(qū)動(dòng)程序管理器(Driver Manager) 由微軟提供的驅(qū)動(dòng)程
49、序管理器是帶有輸入庫的動(dòng)態(tài)連接庫ODBC。DLL ,其主要目的是裝入驅(qū)動(dòng)程序,此外還執(zhí)行以下工作: 1)處理幾個(gè)ODBC 初始化調(diào)用; 2)為每一個(gè)驅(qū)動(dòng)程序提供ODBC 函數(shù)入口點(diǎn); 3)為O D B C 調(diào)用提供參數(shù)和次序驗(yàn)證。</p><p> (3) 驅(qū)動(dòng)程序(Driver) 驅(qū)動(dòng)程序是實(shí)現(xiàn)ODBC 函數(shù)和數(shù)據(jù)源交互的DLL,當(dāng)應(yīng)用程序調(diào)用SQL Connect 或者SQLDriverConnect 函數(shù)
50、時(shí),驅(qū)動(dòng)程序管理器裝入相應(yīng)的驅(qū)動(dòng)程序,它對來自應(yīng)用程序的ODBC 函數(shù)調(diào)用進(jìn)行應(yīng)答,按照其要求執(zhí)行以下任務(wù): 1)建立與數(shù)據(jù)源的連接; 2)向數(shù)據(jù)源提交請求; 3)在應(yīng)用程序需求時(shí),轉(zhuǎn)換數(shù)據(jù)格式; 4)返回結(jié)果給應(yīng)用程序; 5)將運(yùn)行錯(cuò)誤格式化為標(biāo)準(zhǔn)代碼返回; 6)在需要時(shí)說明和處理光標(biāo)。</p><p> (4) 數(shù)據(jù)源[5]</p><p><b> 2.2 JDBC &
51、lt;/b></p><p> 2.2.1 JDBC簡介 </p><p> JDBC(Java Database Connectivity ,Java 數(shù)據(jù)庫連接) 作為Java 平臺的一個(gè)標(biāo)準(zhǔn)組成部分,是根據(jù)“與平臺無關(guān)”的基本原則而設(shè)計(jì)的,對獨(dú)立于數(shù)據(jù)庫的跨平臺的數(shù)據(jù)庫訪問提供了有力的技術(shù)支持。</p><p> JDBC 是Java 程序連接和
52、訪問各種數(shù)據(jù)庫的API(Application Programming Interface ,應(yīng)用程序接口) ,它由一組類和接口構(gòu)成,通過調(diào)用這些類和接口所提供的方法,提供了Java 程序與各種數(shù)據(jù)庫服務(wù)器之間的連接服務(wù),它支持ANSI SQL - 92 標(biāo)準(zhǔn),實(shí)現(xiàn)了從Java 程序內(nèi)調(diào)用標(biāo)準(zhǔn)的SQL 命令對數(shù)據(jù)庫進(jìn)行查詢、插入、刪除和更新等操作,并確保數(shù)據(jù)事務(wù)的正常進(jìn)行。JDBC 在J2EE 平臺中使用JDBC 2.0以上的API 以
53、及JDBC 2.0 擴(kuò)展API ,它們提供了在企業(yè)級開發(fā)應(yīng)用中對異構(gòu)數(shù)據(jù)庫的連接和跨平臺數(shù)據(jù)庫訪問的重要接口。</p><p> 2.2.2 JDBC 的體系結(jié)構(gòu)和實(shí)現(xiàn)</p><p> (1) Java作為數(shù)據(jù)庫前臺 </p><p> 在信息時(shí)代,數(shù)據(jù)庫是用于收集和處理數(shù)據(jù)的工具,數(shù)據(jù)庫形成了許多公司基礎(chǔ)結(jié)構(gòu)的基礎(chǔ)。盡管數(shù)據(jù)庫系統(tǒng)非常適合數(shù)據(jù)的存儲和取得
54、,但人類需要某種前臺應(yīng)有程序以查閱和使用存放的數(shù)據(jù)。</p><p> Java對建立數(shù)據(jù)庫服務(wù)器前臺應(yīng)用程序的開發(fā)人員提供了幾個(gè)好處。Java是“一旦寫成,到處運(yùn)行”的語言,即Java程序不經(jīng)改變即可部署到任何運(yùn)行Java虛擬機(jī)的計(jì)算機(jī)結(jié)構(gòu)和操作系統(tǒng)。對于大公司,有一個(gè)公用開發(fā)平臺好處很大,編程人員可以不再為大公司中的各個(gè)平臺分別編程。Java也很吸引第三方開發(fā)者,單個(gè)Java程序即可滿足大公司客戶的需求。&
55、lt;/p><p> 建立公司系統(tǒng)中基于Java的應(yīng)用程序和小程序的動(dòng)力是巨大的。公司對于將結(jié)構(gòu)和操作系統(tǒng)相關(guān)模型變成針對網(wǎng)絡(luò)的模型相當(dāng)有興趣。Java代表著節(jié)約資源成本的長期戰(zhàn)略。</p><p> 對于開發(fā)人員,Java代表巨大的市場機(jī)會(huì)。大中型企業(yè)很少不用數(shù)據(jù)庫進(jìn)行業(yè)務(wù)工作的,大部分公司將數(shù)據(jù)庫應(yīng)用到業(yè)務(wù)的各個(gè)方面,從人事資源到前線客戶銷售。</p><p>
56、 (2) JDBC API</p><p> JDBC API使開發(fā)者不必不斷重寫程序而可以建立數(shù)據(jù)庫前臺。盡管ANSI委員會(huì)有個(gè)標(biāo)準(zhǔn)組,但每個(gè)數(shù)據(jù)庫系統(tǒng)廠家的系統(tǒng)連接和通訊方法仍然五花八門。</p><p> 為了建立健全獨(dú)立于平臺的應(yīng)用程序和基于Web的小程序,開發(fā)人員應(yīng)考慮用Java開發(fā)前臺連接辦法。從外部看,第三方軟件開發(fā)者通過專用辦法,通過本地方法集成客戶機(jī)方庫或通過建立第
57、三層和新協(xié)議來滿足這種需求。</p><p> JavaSoft是Sun公司負(fù)責(zé)開發(fā)Java產(chǎn)品的業(yè)務(wù)單位,和數(shù)據(jù)庫與數(shù)據(jù)庫工具廠家一起建立獨(dú)立于DBMS的機(jī)制,使開發(fā)人員不必考慮所用的特定數(shù)據(jù)庫而編寫客戶機(jī)方應(yīng)用程序。產(chǎn)生的JDBC API第一版是核心JDK 2的一部分。</p><p> JDBC向應(yīng)用程序開發(fā)者提供了獨(dú)立于數(shù)據(jù)庫的統(tǒng)一的API。這個(gè)API提供了編寫的標(biāo)準(zhǔn)和考慮所有
58、不同應(yīng)用程序設(shè)計(jì)的標(biāo)準(zhǔn)。其奧秘是一組由驅(qū)動(dòng)程序?qū)崿F(xiàn)的Java接口。驅(qū)動(dòng)程序負(fù)責(zé)標(biāo)準(zhǔn)JDBC調(diào)用向支持的數(shù)據(jù)庫所要的具體調(diào)用轉(zhuǎn)變。</p><p> 應(yīng)用程序編寫一次并移植到各種驅(qū)動(dòng)程序上。應(yīng)用程序不變,驅(qū)動(dòng)程序則各不相同。驅(qū)動(dòng)程序可以用于開發(fā)多層數(shù)據(jù)庫設(shè)計(jì)的中間層,也稱中間件(middleware)。</p><p> 除了向開發(fā)者提供統(tǒng)一的獨(dú)立于DBMS的框架外,JDBC還提供了讓開
59、發(fā)者保持?jǐn)?shù)據(jù)庫廠家提供的特定功能的辦法。JDBC驅(qū)動(dòng)程序必須支持ANSI AQL-2項(xiàng)目層,但JDBC允許開發(fā)者直接將查詢字符串傳遞到連接的驅(qū)動(dòng)程序。這些字段可能是ANSI SQL也可能不是,或者根本不是AQL。這些字符串的使用是基礎(chǔ)驅(qū)動(dòng)程序的事。</p><p> JDBC不是Mincrosoft的ODBC(開放式數(shù)據(jù)庫連接)規(guī)范派生的,JDBC完全是用Java編寫的,而ODBC是個(gè)C接口。但是,JDBC和O
60、DBC都是基于X/開放SQL命令層接口(CLI),相同的概念性基礎(chǔ)使API工作進(jìn)展更快,使API的接受更加容易。JavaSoft提供了將JDBC變成ODBC的JDBC-ODBC橋。這個(gè)用本地方法完成的版本很小很有效。</p><p> (3) JDBC 的組成</p><p> JDBC 是實(shí)現(xiàn)Java 應(yīng)用程序與各種不同數(shù)據(jù)庫對話的一種機(jī)制。 JDBC 由兩部分與數(shù)據(jù)庫獨(dú)立的API
61、組成,一部分是面向程序開發(fā)人員的JDBCAPI ,另一部分是面向底層的JDBC Driver API。 JDBC提供了一個(gè)通用的JDBC Driver Manager ,用來管理各種數(shù)據(jù)庫軟件商提供的JDBC 驅(qū)動(dòng)程序,從而訪問其數(shù)據(jù)庫。 此外,對沒有提供相應(yīng)JDBC 驅(qū)動(dòng)程序的數(shù)據(jù)庫系統(tǒng),開發(fā)了特殊的驅(qū)動(dòng)程序:JDBC -ODBC 橋,該驅(qū)動(dòng)程序支持JDBC 通過現(xiàn)有的ODBC驅(qū)動(dòng)程序訪問其數(shù)據(jù)庫系統(tǒng)。 JDBC 的基本層次結(jié)構(gòu)由Ja
62、va 程序、JDBC 驅(qū)動(dòng)程序管理器、驅(qū)動(dòng)程序和數(shù)據(jù)庫四部分組成。</p><p> Java 程序:Java 程序包括Java 應(yīng)用程序和Ja2va 小應(yīng)用程序,主要是根據(jù)JDBC 方法實(shí)現(xiàn)對數(shù)據(jù)庫的訪問和操作。 其主要任務(wù)有:請求與數(shù)據(jù)庫建立連接;向數(shù)據(jù)庫發(fā)送SQL 請求;為結(jié)果集定義存儲應(yīng)用和數(shù)據(jù)類型;查詢結(jié)果;處理錯(cuò)誤;控制傳輸、提交及關(guān)閉連接等操作。</p><p> JDB
63、C 驅(qū)動(dòng)程序管理器:它能夠動(dòng)態(tài)地管理和維護(hù)數(shù)據(jù)庫查詢所需要的所有驅(qū)動(dòng)程序?qū)ο?實(shí)現(xiàn)Java 程序與特定驅(qū)動(dòng)程序的連接,從而體現(xiàn)JDBC的“與平臺無關(guān)”這一特點(diǎn)。 其主要任務(wù)有:為特定數(shù)據(jù)庫選擇驅(qū)動(dòng)程序;處理JDBC 初始化調(diào)用;為每個(gè)驅(qū)動(dòng)程序提供JDBC 功能的入口;為JDBC 調(diào)用執(zhí)行參數(shù)等。</p><p> 驅(qū)動(dòng)程序:驅(qū)動(dòng)程序處理JDBC 方法,向特定數(shù)據(jù)庫發(fā)送SQL 請求,并為Java 程序獲取結(jié)果。在
64、必要的時(shí)候,驅(qū)動(dòng)程序可以翻譯或優(yōu)化請求,使SQL 請求符合DBMS 支持的語言。 其主要任務(wù)有:建立與數(shù)據(jù)庫的連接;向數(shù)據(jù)庫發(fā)送請求;用戶程序請求時(shí),執(zhí)行翻譯;將錯(cuò)誤代碼格式化成標(biāo)準(zhǔn)的JDBC 錯(cuò)誤代碼等。 JDBC 是獨(dú)立于數(shù)據(jù)庫管理系統(tǒng)的,而每個(gè)數(shù)據(jù)庫系統(tǒng)均有自己的協(xié)議與客戶機(jī)通信,因此,JDBC 利用數(shù)據(jù)庫驅(qū)動(dòng)程序來使用這些數(shù)據(jù)庫引擎。</p><p> JDBC 驅(qū)動(dòng)程序由數(shù)據(jù)庫軟件商和第三方軟件商提供
65、,因此,根據(jù)編程所使用的數(shù)據(jù)庫系統(tǒng)不同,所需要的驅(qū)動(dòng)程序也有所不同。</p><p> 數(shù)據(jù)庫:指Java 程序需要訪問的數(shù)據(jù)庫及其數(shù)據(jù)庫管理系統(tǒng)。</p><p> (3) JDBC 的工作機(jī)制</p><p> 如果用戶是從事軟件領(lǐng)域工作的,不可能沒有聽說過SQL(Structure Query Language:結(jié)構(gòu)化查詢語言),它是一種標(biāo)準(zhǔn)化的關(guān)系型數(shù)
66、據(jù)庫訪問語言。在SQL看來,數(shù)據(jù)庫就是表的集合,其中包含了行和列。SQL標(biāo)準(zhǔn)雖然也還處在不斷變革之中(任何一門標(biāo)準(zhǔn)如果已一成不變了,那只能說明這門學(xué)科已經(jīng)停止發(fā)展了),但其基本內(nèi)容相對穩(wěn)定。JDBC定義了Java語言同SQL數(shù)據(jù)之間的程序設(shè)計(jì)接口。</p><p> JDBC有一個(gè)非常獨(dú)特的動(dòng)態(tài)連接結(jié)構(gòu),它使得系統(tǒng)模塊化。使用JDBC來完成對數(shù)據(jù)庫的訪問包括以下四個(gè)主要組件:Java的應(yīng)用程序、JDBC驅(qū)動(dòng)器管
67、理器、驅(qū)動(dòng)器和數(shù)據(jù)源。</p><p> JavaSoft公司開發(fā)了JDBC API,JDBC API是一個(gè)標(biāo)準(zhǔn)統(tǒng)一的SQL數(shù)據(jù)存取接口。JDBC在Internet中的作用與ODBC在Windows系列中的作用類似。它為Java程序提供了一個(gè)統(tǒng)一縫地操作各種數(shù)據(jù)庫的接口,程序員編程時(shí),可以不關(guān)心它所要操作的數(shù)據(jù)庫是哪個(gè)廠家的產(chǎn)品,從而提高了軟件的通用性,而且在Internet上確實(shí)無法預(yù)料你的用戶想訪問什么類型
68、的數(shù)據(jù)庫。只要系統(tǒng)上安裝了正確的驅(qū)動(dòng)器組,JDBC應(yīng)用程序就可以訪問其相關(guān)的數(shù)據(jù)庫。</p><p> 用JDBC來實(shí)現(xiàn)訪問數(shù)據(jù)庫記錄可以采用下面的幾個(gè)步驟:</p><p> 1) 通過驅(qū)動(dòng)器管理器獲取連接接口。</p><p> 2) 獲得Statement或它的子類。</p><p> 3) 限制Statement中的參數(shù)。&l
69、t;/p><p> 4) 執(zhí)行Statement。</p><p> 5) 查看返回的行數(shù)是否超出范圍。</p><p> 6) 關(guān)閉Statement。</p><p> 7) 處理其它的Statement</p><p> 8) 關(guān)閉連接接口。</p><p> (4) JDBC 驅(qū)
70、動(dòng)程序的分類</p><p> JDBC驅(qū)動(dòng)程序?qū)崿F(xiàn)在JDBC API 中定義的所有抽象類和接口,為通用的Driver Manager 提供JD2BC API。JDBC 驅(qū)動(dòng)程序通常由數(shù)據(jù)庫廠商提供,目前主流數(shù)據(jù)庫產(chǎn)品都提供相關(guān)的JDBC 驅(qū)動(dòng)程序。根據(jù)訪問數(shù)據(jù)庫的技術(shù)不同,JDBC 驅(qū)動(dòng)程序相應(yīng)地分為四種類型,如圖1 所示。 不同類型的JDBC驅(qū)動(dòng)程序有著不一樣的特性和使用方法。</p><
71、;p> 第一類:JDBC - ODBC 橋驅(qū)動(dòng)程序(JDBC - OD2BC Bridge) 。 此類驅(qū)動(dòng)程序提供了通過ODBC 驅(qū)動(dòng)程序的JDBC 訪問。 其特點(diǎn)是必須在本地計(jì)算機(jī)上先安裝好ODBC 驅(qū)動(dòng)程序,然后通過JDBC - ODBCBridge 的轉(zhuǎn)換,將Java 程序中使用的JDBC API 訪問指令轉(zhuǎn)換成ODBC API 指令,進(jìn)而通過ODBC 驅(qū)動(dòng)程序調(diào)用本地?cái)?shù)據(jù)庫驅(qū)動(dòng)代碼完成對數(shù)據(jù)庫的訪問。 這種方法的不足是:
72、執(zhí)行效率比較低,不適合對大數(shù)據(jù)量存取的應(yīng)用;要求客戶端必須安裝ODBC驅(qū)動(dòng),不適合基于InternetPIntranet 的應(yīng)用。</p><p> 第二類:部分Java 的本地JDBC API 橋驅(qū)動(dòng)程序(JDBC - Native API Bridge) 。 同第一類一樣,此類驅(qū)動(dòng)程序也必須在本地計(jì)算機(jī)上先安裝好特定的驅(qū)動(dòng)程序(類似ODBC) ,然后通過JDBC - NativeAPI Bridge 的轉(zhuǎn)換
73、, 把Java 程序中使用的JDBCAPI 轉(zhuǎn)換成Native API ,進(jìn)而存取數(shù)據(jù)庫。 這種方法效率比第一類驅(qū)動(dòng)程序效率雖然高一些,但仍然需要在每臺客戶機(jī)上預(yù)先安裝本地API 庫,因此不利于維護(hù)和使用。</p><p> 第三類:純Java 的JDBC 中間件驅(qū)動(dòng)程序(JD2BC - Middleware) 。 使用這類驅(qū)動(dòng)程序時(shí)不需要在本地計(jì)算機(jī)上安裝任何附加軟件,但是必須在安裝數(shù)據(jù)庫管理系統(tǒng)的服務(wù)器端加
74、裝中間件(Middle2ware) ,這個(gè)中間件負(fù)責(zé)所有存取數(shù)據(jù)庫時(shí)必要的轉(zhuǎn)換。 此類驅(qū)動(dòng)程序能將JDBC 訪問轉(zhuǎn)換成與數(shù)據(jù)庫無關(guān)的標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議(通常是HTTP 或HTTPS) 送出,然后由一個(gè)中間件服務(wù)器再將其轉(zhuǎn)換成數(shù)據(jù)專用的訪問指令,完成對數(shù)據(jù)庫的操作。 中間件服務(wù)器能支持對多種數(shù)據(jù)庫的訪問。 由于是基于中間件服務(wù)器的,這類驅(qū)動(dòng)程序的體積最小,效率較高,具有最大的靈活性,缺點(diǎn)是需要一個(gè)中間服務(wù)器的支持。 此類驅(qū)動(dòng)采用標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議,
75、可以被防火墻支持,是Internet 應(yīng)用理想的解決方案。</p><p> 第四類:純Java 的JDBC 驅(qū)動(dòng)程序(Pure JDBCDriver) 。 使用這類驅(qū)動(dòng)程序時(shí)無需安裝任何附加的軟件(無論是本地計(jì)算機(jī)或是數(shù)據(jù)庫服務(wù)器端) ,所有存取數(shù)據(jù)庫的操作都直接由JDBC 驅(qū)動(dòng)程序來完成。 此類驅(qū)動(dòng)程序能將JDBC 調(diào)用轉(zhuǎn)換成DBMS 專用的網(wǎng)絡(luò)協(xié)議。 數(shù)據(jù)庫廠商是這一類驅(qū)動(dòng)程序的主要提供者。 它允許從客戶
76、機(jī)到數(shù)據(jù)庫服務(wù)器的直接調(diào)用。 這種驅(qū)動(dòng)程序的效率最高,但由于采用DBMS專用的網(wǎng)絡(luò)協(xié)議,可能不被防火墻支持。 在Internet應(yīng)用中會(huì)存在潛在安全隱患。</p><p> 綜上所述,最佳的JDBC 驅(qū)動(dòng)程序類型是第四類,它不會(huì)增加任何額外的開銷,并且由純Java語言開發(fā)而成,擁有最佳的兼容性。 由于第一類和第二類的JDBC 驅(qū)動(dòng)程序都必須事先安裝其他附加的軟件,有損Java 數(shù)據(jù)庫程序的兼容性。 第三類JDB
77、C 驅(qū)動(dòng)程序也是不錯(cuò)的選擇,它也是由純Java 語言開發(fā)而成的,并且中間件也僅需要在服務(wù)器上安裝。 因此,建議最好以第三類和第四類JDBC 驅(qū)動(dòng)程序?yàn)橹饕x擇,第一類和第二類的JDBC 驅(qū)動(dòng)程序?yàn)榇我x擇。。 </p><p> (5) 利用JDBC代替CGI</p><p> 迄今為止,通過Java訪問數(shù)據(jù)庫的唯一方法就是利用Java中的流調(diào)和訪問Common Gateway Int
78、erface(CGI,公用網(wǎng)關(guān)接口)程序。通過Java調(diào)用CGI腳本其實(shí)是執(zhí)行一個(gè)訪問數(shù)據(jù)庫并返回結(jié)果的獨(dú)立程序。</p><p> 使用這種方法速度很慢,而且會(huì)在應(yīng)用程序中引入更多的錯(cuò)誤。這是由于利用兩種不同的開發(fā)語言開發(fā)程序,需要掌握兩種不同的技術(shù)。使用JDBC,用戶只要了解Java語言即可,而使用CGI,用戶必須同時(shí)使用Java和另一種編程語言。</p><p> 使用JDBC的
79、另一個(gè)原因是它的速度比CGI方法更快。使用CGI方法通常要求計(jì)算機(jī)執(zhí)行另一個(gè)獨(dú)立的程序。這個(gè)獨(dú)立的程序訪問數(shù)據(jù)庫,處理數(shù)據(jù),并將結(jié)果返回給調(diào)用程序。這就需要多級處理,因而增加了等待時(shí)間和出錯(cuò)概率。</p><p> 調(diào)用CGI腳本通常是通過Web服務(wù)器執(zhí)行一個(gè)新的腳本,而執(zhí)行JDBC的數(shù)據(jù)庫命令只需要某種將SQL命令發(fā)送給數(shù)據(jù)庫的服務(wù)器。這就大大縮短了執(zhí)行SQL語句的時(shí)間,CGI腳本必須獨(dú)立地連接數(shù)據(jù)庫,處理執(zhí)
80、行結(jié)構(gòu),而JDBC的解決方案使應(yīng)用程序直接與數(shù)據(jù)庫相連,執(zhí)行各種操作。[6]</p><p> 2.3 ODBC和JDBC的比較</p><p> JDBC API用于連接Java應(yīng)用程序與各種關(guān)系數(shù)據(jù)庫。這使得人們在建立客戶/服務(wù)器應(yīng)用程序時(shí),通常把Java作為編程語言,把任何一種瀏覽器作為應(yīng)用程序的友好界面,把Internet或Intranet作為網(wǎng)絡(luò)主干,把有關(guān)的數(shù)據(jù)庫作為數(shù)據(jù)庫
81、后端。以下是使用JDBC的優(yōu)缺點(diǎn)。</p><p><b> 優(yōu)點(diǎn)如下:</b></p><p> (1) JDBC API與ODBC十分相似,有利于用戶理解。</p><p> (2) JDBC使得編程人員從復(fù)雜的驅(qū)動(dòng)器調(diào)用命令和函數(shù)中解脫出來,可以致力于應(yīng)用程序中的關(guān)鍵地方。</p><p> (3) JDB
82、C支持不同的關(guān)系數(shù)據(jù)庫,使得程序的可移植性大大加強(qiáng)。</p><p> (4) 用戶可以使用JDBC-ODBC橋驅(qū)動(dòng)器將JDBC函數(shù)調(diào)用轉(zhuǎn)換為ODBC。</p><p> (5) JDBC API是面向?qū)ο蟮?,可以讓用戶把常用的方法封裝為一個(gè)類,備后用。</p><p><b> 缺點(diǎn)如下:</b></p><p>
83、; (1) 使用JDBC,訪問數(shù)據(jù)記錄的速度會(huì)受到一定程度的影響。</p><p> (2) JDBC結(jié)構(gòu)中包含了不同廠家的產(chǎn)品,這就給更改數(shù)據(jù)源帶來了很大的麻煩。</p><p> 3. RFID庫存管理系統(tǒng)設(shè)計(jì)過程</p><p> 3.1管理系統(tǒng)設(shè)計(jì)前提</p><p> 該RFID庫存管理系統(tǒng)是一個(gè)建立在RFID讀取接收器以
84、上的系統(tǒng)。該系統(tǒng)中所有有關(guān)貨物的信息都是來自于RFID讀取器和遠(yuǎn)端服務(wù)器。讀取器將在庫存中流通的貨物的RFID碼讀出后交給管理系統(tǒng),管理系統(tǒng)再利用web servers 獲取該RFID碼對應(yīng)貨物的詳細(xì)信息并放入數(shù)據(jù)庫,從而獲得數(shù)據(jù)信息。故該管理系統(tǒng)的設(shè)計(jì)前提是RFID讀取器和web servers 能夠正常合作進(jìn)行。但由于時(shí)間有限,在本文中并未涉及到該管理系統(tǒng)和兩者的合作協(xié)調(diào)。</p><p> 3.2程序使用
85、的軟件工具</p><p> 3.2.1 JBuilder 9.0</p><p> JBulider 是目前最好的java開發(fā)工具之一,在協(xié)同管理,對J2EE和XML的支持均走在其他產(chǎn)品的前面。</p><p> JBuilder的主要特性:</p><p> (1) 提供與Tomcat的集成,使Web開發(fā)更容易。</p>
86、;<p> (2) 提供了對企業(yè)應(yīng)用的開發(fā)功能,可以集成多種應(yīng)用服務(wù)器。</p><p> (3) 提供了更簡單的程序發(fā)布功能,所有的應(yīng)用都可以打包。</p><p> (4) 提供了團(tuán)隊(duì)開發(fā)能力,可以集成多種版本控制產(chǎn)品。</p><p> JBuilder是遵循Sun公司J2EE標(biāo)準(zhǔn)的可視化集成開發(fā)工具。JBuilder是一種處于市場領(lǐng)先地
87、位的跨平臺環(huán)境,主要用于構(gòu)建具有行業(yè)實(shí)力的企業(yè)Java應(yīng)用程序。JBuilder繼承了Borland公司開發(fā)工具系列的優(yōu)秀特性,這使得用過Delphi,C++Builder 的程序員很容易過渡到JBuilder的開發(fā)環(huán)境中。</p><p> JBuilder實(shí)際上包括了用戶在Java集成開發(fā)環(huán)境中所需要的一切東西。由于JBuilder和幾種單獨(dú)源代碼處理產(chǎn)品集成在一起的,所以它就能夠支持多種Java開發(fā)工具包
88、版本。它對于JavaDoc的支持是無可挑剔的:JBuilder軟件能夠自動(dòng)生成JavaDoc文件。[7]</p><p> 3.2.2 SQL Server 2000</p><p> SQL Server 2000是建立在 SQL Server 7.0 在可伸縮性、可用性、可管理性和數(shù)據(jù)倉庫成功的基礎(chǔ)上,并且引入了針對電子商務(wù)的重要新功能。</p><p>
89、 在高性能和企業(yè)級可伸縮性領(lǐng)域,SQL Server 2000 設(shè)計(jì)成利用 Windows 2000 對更多處理器、更大的系統(tǒng)內(nèi)存的支持,最終達(dá)到支持 64 位硬件平臺。在不斷提升可用性的努力過程中,SQL Server 2000 采用 Windows 2000 四路群集,提供了大大改進(jìn)的群集支持。SQL Server 7.0 已經(jīng)在可管理性和易用性方面在行業(yè)內(nèi)領(lǐng)先,SQL Server 2000 通過與 Windows 2000 活動(dòng)
90、目錄緊密結(jié)合進(jìn)一步改進(jìn)了這些功能。而且,SQL Server 2000 還包含對現(xiàn)有管理工具和實(shí)用程序的重大改進(jìn),并引入更具自我調(diào)節(jié)和自我管理的引擎功能。</p><p> 通過與 OLAP 服務(wù)、數(shù)據(jù)轉(zhuǎn)換服務(wù)、存儲庫和英文查詢的緊密結(jié)合,SQL Server 7.0 代表了行業(yè)內(nèi)最全面的數(shù)據(jù)倉庫和決策支持平臺。SQL Server 2000 繼續(xù)了這種創(chuàng)新,在整個(gè)系統(tǒng)內(nèi)進(jìn)行了重要的改進(jìn)。特別重要的是,SQL
91、Server 2000 關(guān)系引擎增加了實(shí)質(zhì)化的視圖,改善了在特大型數(shù)據(jù)庫環(huán)境中執(zhí)行復(fù)雜查詢的性能。同時(shí),SQL Server 2000 引入了新的數(shù)據(jù)挖掘功能,可自動(dòng)發(fā)現(xiàn)在大量數(shù)據(jù)之間隱藏的關(guān)系并可基于歷史數(shù)據(jù)作出預(yù)測。這些數(shù)據(jù)挖掘功能將要實(shí)施,以向最終用戶隱藏這種尖端技術(shù)的復(fù)雜性,并允許開發(fā)人員將第三方的數(shù)據(jù)挖掘產(chǎn)品輕松集成進(jìn)客戶的應(yīng)用程序中。最后,在電子商務(wù)領(lǐng)域,SQL Server 2000 高度集成了對 XML 和通過 Web
92、訪問數(shù)據(jù)庫的支持。</p><p> 3.3數(shù)據(jù)庫類型的選定</p><p> 從上面的方法論證中,我們可以看出JDBC可以利用驅(qū)動(dòng)程序直接對SQL Server 進(jìn)行操作,這樣的操作比使用JDBC-ODBC橋要迅速而且簡單。因?yàn)槲覀兪褂玫氖莏ava編程,直接使用JDBC可以更加方便,順暢,故本設(shè)計(jì)中使用JDBC。</p><p> 3.4數(shù)據(jù)庫的建立和連接&
93、lt;/p><p> 3.4.1 建立數(shù)據(jù)庫</p><p> 打開SQL Server 2000,新建一個(gè)數(shù)據(jù)庫 RFID_Server ,在其中建一名為 ProductInfo 的數(shù)據(jù)表。</p><p> 根據(jù)要求,該表有三列,分別是 RFIDNo , ProductName 和 Producer。其中 RFIDNo 為該表主鍵。其中RFIDNo是流通貨物的
94、唯一RFID碼,ProductName是該貨物的名稱,如可口可樂,百事可樂等,Producer是該貨物的生產(chǎn)廠家,都設(shè)為不可為空。</p><p><b> 如圖3-1所示:</b></p><p> 圖3-1RFID_Server數(shù)據(jù)庫中ProductInfo表</p><p> 3.4.2 下載SQL Server 的驅(qū)動(dòng)程序并設(shè)置環(huán)
95、境變量</p><p> 在http://www.microsoft.com 下載msbase.jar, mssqlserver.jar, msutil.jar 三個(gè)包,并在classpath下添加環(huán)境變量。</p><p> 這三個(gè)包是Microsoft針對JDBC 對SQL Server 2000 操作的驅(qū)動(dòng)程序。</p><p> 3.4.3與數(shù)據(jù)庫連接
96、</p><p> 在建立好數(shù)據(jù)庫表后,下面要做的第一件事情是與想要使用的SQL Server 2000 建立一個(gè)連接,這包括兩個(gè)步驟:裝載驅(qū)動(dòng)程序并建立連接。</p><p> 裝載驅(qū)動(dòng)程序只需要非常簡單的一行代碼。在這里,我們想要使用微軟的驅(qū)動(dòng)程序,可以用下列代碼裝載它:</p><p> Class.forName("com.microsoft
97、.jdbc.sqlserver.SQLServerDriver").newInstance();</p><p> 這里其實(shí)不需要?jiǎng)?chuàng)建一個(gè)驅(qū)動(dòng)程序類的實(shí)例并且用DriverManager 登記它,因?yàn)檎{(diào)用Class。forName 將自動(dòng)加載驅(qū)動(dòng)程序類。如果自己創(chuàng)建實(shí)例,將創(chuàng)建一個(gè)不必要的副本,但它不會(huì)帶來什么壞處。</p><p> 加載Driver 類后, 它們即可用來與
98、數(shù)據(jù)庫建立連接。</p><p> 第二步就是用適當(dāng)?shù)尿?qū)動(dòng)程序類于SQL Server 2000建立一個(gè)連接。下列的代碼是一般的做法:</p><p> Connection conn= DriverManager.getConnection(url,user,password);</p><p> 這個(gè)步驟也非常的簡單,最難得是怎樣提供URL。如果正在使用J
99、DBC-ODBC橋,JDBC URL將以jdbc::odbc開始,余下的URL通常是您的數(shù)據(jù)源名字或數(shù)據(jù)庫系統(tǒng)。因此,假設(shè)正在使用ODBC存取一個(gè)叫“Test”的ODBC數(shù)據(jù)源,您的JDBC URL 是jdbc::odbc:Test。把“name”及“Password”替換為您登陸DBMS的用戶名及口令。如果您登陸數(shù)據(jù)庫系統(tǒng)的用戶名為“TestUser”,口令為“jdbc”,只需下面的兩行代碼就可以建立一個(gè)連接:</p>
100、<p> String url = “jdbc::odbc:Test”;</p><p> Connection con=DriverManager。getConnection(url,”TestUser”,”jdbc”);</p><p> 但我們這里使用的是第三方開發(fā)的JDBC驅(qū)動(dòng)程序,文檔將告訴您該使用什么subprotocol,就是在JDBC URL 中放在jdbc
101、后面的部分。例如,如果驅(qū)動(dòng)程序開發(fā)者注冊了acme作為subprotocol,JDBC URL的第一和第二部分將是jdbc:acme。驅(qū)動(dòng)程序文檔也將告訴您余下JDBC URL 的格式。JDBC URL最后一部分提供了定位數(shù)據(jù)庫的信息。</p><p> 如果您裝載的驅(qū)動(dòng)程序識別了提供給DriverManager。getConnection的JDBC URL,那個(gè)驅(qū)動(dòng)程序?qū)⒏鶕?jù)JDBC URL 建立一個(gè)到SQL
102、 Server 2000的連接。正如名稱所示,DriverManager類在幕后為您管理建立連接的所有細(xì)節(jié)。除非您是正在寫驅(qū)動(dòng)程序,可能無需使用此類的其他任何方法,一般需要在此類中直接使用的唯一方法是DriverManager.getConnection。</p><p> DriverManager.getConnection方法返回一個(gè)打開的連接,可以使用此連接創(chuàng)建statements并發(fā)送SQL語句到數(shù)據(jù)
103、庫。</p><p> 下面就是在程序中實(shí)際使用的打開連接數(shù)據(jù)庫的代碼:</p><p> Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); /*加載驅(qū)動(dòng)程序*/</p>
104、<p> String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=RFID_Server"; /*設(shè)定數(shù)據(jù)庫的路徑*/</p><p> String user="sa";
105、 /*設(shè)定數(shù)據(jù)庫用戶名*/</p><p> String password="sa"; /*設(shè)定數(shù)據(jù)庫密碼*/</p><p> Connection conn= DriverManager。getConnection(url,user,password);</p><p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 庫存管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----庫存管理系統(tǒng)
- 庫存管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于rfid智能倉儲管理系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 商店庫存管理系統(tǒng)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----商品庫存管理系統(tǒng)
- 商店庫存管理系統(tǒng)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--商品庫存管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)(論文)-庫存管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)--vb庫存管理系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-庫存銷售管理系統(tǒng)的開發(fā)
- 基于rfid的家庭智能門禁管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 基于RFID技術(shù)的庫存管理系統(tǒng)研究.pdf
- 基于rfid的停車場管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 基于RFID技術(shù)的庫存管理系統(tǒng)分析與設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)--庫存管理信息系統(tǒng)
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)--- 庫存管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)--超市庫存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于rfid的停車場管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 小型超市庫存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
評論
0/150
提交評論