亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于安卓手機(jī)的高效數(shù)據(jù)庫訪問機(jī)制

        2013-11-30 05:27:30彭鳳凌庹先國王洪輝鐘佳訊蒲建華
        計算機(jī)工程與設(shè)計 2013年12期
        關(guān)鍵詞:語句數(shù)據(jù)包遠(yuǎn)程

        彭鳳凌,庹先國,2,王洪輝,鐘佳訊,蒲建華

        (1.成都理工大學(xué) 地質(zhì)災(zāi)害防治與地質(zhì)環(huán)境保護(hù)國家重點實驗室,四川 成都610059;2.西南科技大學(xué) 核廢物與環(huán)境安全國防重點學(xué)科實驗室,四川 綿陽621010)

        0 引 言

        數(shù)據(jù)庫技術(shù)的誕生使得人們能夠方便的對大量數(shù)據(jù)進(jìn)行存取與管理[1]。隨著智能手機(jī)和移動通信技術(shù)的快速發(fā)展,越來越多的數(shù)據(jù)庫應(yīng)用從原來的Windows系統(tǒng)漸漸轉(zhuǎn)移到了智能設(shè)備上,由于智能設(shè)備現(xiàn)階段的水平還無法與PC相比,因此訪問數(shù)據(jù)庫也就不能簡單的在智能設(shè)備上開發(fā)應(yīng)用程序來完成。關(guān)于智能設(shè)備訪問數(shù)據(jù)庫的技術(shù),前人有一些成果,總結(jié)起來主要是通過與Web服務(wù)器打交道實現(xiàn),如文獻(xiàn)[2]和文獻(xiàn)[3]就是采用的這種方法。該方法雖比較成熟且為常用方法,但訪問Web服務(wù)器必然需要采用超文本傳輸協(xié)議 (即HTTP協(xié)議),然后HTTP協(xié)議非常復(fù)雜,每次進(jìn)行通信時都必須按照該協(xié)議的格式將信息進(jìn)行封裝從而大大增加了信息傳輸量并提高了傳輸成本,且該方法已經(jīng)成熟,因此對于數(shù)據(jù)庫訪問的效率和實時性等方面改進(jìn)空間已經(jīng)很小。對此,筆者以Android手機(jī)與Oracle數(shù)據(jù)交互為例,以TCP協(xié)議和ODBC技術(shù)為基礎(chǔ)提出了另一種智能設(shè)備高效、快速的訪問遠(yuǎn)程數(shù)據(jù)庫的方法,該方法與常用方法相比,能夠大大降低傳輸?shù)男畔⒘繌亩鴾p少智能設(shè)備使用流量并在一定程度上提高訪問數(shù)據(jù)庫的效率和速度,具有一定借鑒價值。

        1 數(shù)據(jù)庫交互方案對比分析

        通常移動終端與數(shù)據(jù)庫交互方法是:移動終端通過API首先與遠(yuǎn)程的Web服務(wù)器建立連接,再將相關(guān)數(shù)據(jù)嚴(yán)格按照HTTP協(xié)議格式將其封裝并發(fā)送到Web服務(wù)器中,Web服務(wù)器將信息進(jìn)行拆封解析然后訪問數(shù)據(jù)庫,最后將數(shù)據(jù)庫操作結(jié)果按照HTTP協(xié)議格式返回給移動終端。即利用手機(jī)端的API將數(shù)據(jù)提交到Web服務(wù)端的Servlet或者JSP文件中去。該方法雖然為常用方法,但存在一個問題,那就是每次移動終端與服務(wù)器之間的通信,發(fā)送方都必須按照HTTP協(xié)議格式封裝信息 (即使只是傳輸一個簡單的字符串,也必須嚴(yán)格封裝信息),但HTTP協(xié)議非常復(fù)雜,采用它要除了需要傳輸許多額外的封裝信息 (如html的標(biāo)記),因此當(dāng)傳輸?shù)臄?shù)據(jù)信息 (即實際有用信息)小于封裝信息時,該方法顯得浪費流量且大大提高成本。根據(jù)TCP/IP參考模型,HTTP實際上是應(yīng)用層的協(xié)議,它是根據(jù)傳輸層的TCP協(xié)議而來,基于此本文提出直接采用TCP協(xié)議實現(xiàn)信息傳輸,并由PC端的Windows應(yīng)用軟件充當(dāng)與數(shù)據(jù)庫交互的中介,避免了與Web服務(wù)器打交道,從而大大降低信息的傳輸量且能提高訪問數(shù)據(jù)庫的效率和速度,這也是本文的出發(fā)點。

        2 Android應(yīng)用程序

        搭建Android開發(fā)環(huán)境可以通過采用Eclipse工具配合相關(guān)插件和Android的SDK即可完成[4-5],Andriod應(yīng)用程序主要由四大組件構(gòu)成:第一 (活動):它是用戶可見且可操作的界面并擁有獨立生命周期;第二 (服務(wù)):與活動相似但無界面并且運(yùn)行于后臺;第三 (廣播接收者):它可以在系統(tǒng)內(nèi)實現(xiàn)所有廣播;第四 (內(nèi)容提供者):它為應(yīng)用程序提供所需要的數(shù)據(jù)并存儲重要數(shù)據(jù)。

        3 方案設(shè)計

        3.1 Socket通信

        Socket即套接字的意思,它是一項比較成熟的點對點通信技術(shù)[6-11],適用于多種操作環(huán)境。通信雙方只需建立各自的Socket,通過操作Socket即可完成通信。它對應(yīng)于TCP和UDP兩種通信方式,由于TCP通信方式比UDP更加可靠,所以本文采用TCP方式。

        3.2 ODBC數(shù)據(jù)庫訪問技術(shù)

        ODBC即開放數(shù)據(jù)庫互連,它是由微軟推出的一種數(shù)據(jù)庫訪問接口標(biāo)準(zhǔn),應(yīng)用程序不必重新編譯、連接就可以與不同的DBMS打交道。驅(qū)動程序管理器負(fù)責(zé)將應(yīng)用程序?qū)DBC API的調(diào)用傳遞給正確的驅(qū)動程序,驅(qū)動程序在執(zhí)行完相應(yīng)操作后,將結(jié)果通過驅(qū)動程序管理器返回給應(yīng)用程序。因此只要創(chuàng)建了ODBC數(shù)據(jù)源,且測試數(shù)據(jù)源成功,即可通過調(diào)用相關(guān)API來操作數(shù)據(jù)庫。圖1為ODBC的訪問數(shù)據(jù)庫的流程圖。

        圖1 ODBC訪問流程

        3.3 訪問機(jī)制設(shè)計

        通過分析Socket通信基本原理和ODBC技術(shù),可以提出一種手機(jī)遠(yuǎn)程操作數(shù)據(jù)庫的方案,即手機(jī)端利用Socket通信通過移動網(wǎng)絡(luò)接入Internet(當(dāng)然也可利用WIFI接入Internnet)實現(xiàn)與遠(yuǎn)程PC的通信,然后PC端再利用ODBC技術(shù)與數(shù)據(jù)庫進(jìn)行交互,從而使PC端成為手機(jī)端與數(shù)據(jù)庫交互的中介,并使得手機(jī)端能夠間接訪問到遠(yuǎn)程數(shù)據(jù)庫。根據(jù)這個思路,整個交互過程分為3個過程:第一,手機(jī)端將要執(zhí)行的SQL語句和相關(guān)信息發(fā)送到PC端;第二,PC端建立與數(shù)據(jù)庫的連接并執(zhí)行SQL語句;第三,PC端將執(zhí)行結(jié)果發(fā)送回手機(jī)端。圖2為方案設(shè)計圖。

        圖2 方案設(shè)計

        4 訪問機(jī)制實現(xiàn)

        4.1 初始化

        該部分完成Socket通信的初始化以及PC與數(shù)據(jù)庫Connection的建立。Socket通信雙方首先需要創(chuàng)建各自的Socket,PC端將IP地址和端口號綁定到Socket,然后開始監(jiān)聽端口。此時若手機(jī)端發(fā)出連接請求,PC端則會接受請求并接通連接,此時雙方可相互通信。圖3為初始化流程圖。而數(shù)據(jù)庫的建立需要分配環(huán)境句柄并設(shè)置連接屬性。

        圖3 初始化流程

        4.2 信息收發(fā)實現(xiàn)

        Socket初始化完成后,通信雙方的連接已經(jīng)建立,可以進(jìn)行信息的收發(fā)。對于Android端,由于采用Java語言編寫,需要創(chuàng)建Socket對象,并利用getOutputStream()獲取輸出流,最后向輸出流寫入內(nèi)容并調(diào)用flush方法即完成信息的發(fā)送。而接收信息則采用read方法實現(xiàn)。對于PC端,由于采用C語言編寫,所以直接采用recv()方法接收信息,采用send()方法發(fā)送信息 (此方法僅適用于傳輸普通信息,如果要傳輸文件,需要對此方法進(jìn)行改進(jìn),本文后面會談到)。由于本文重點闡述操作機(jī)制在通信過程中的實現(xiàn)過程,對于Android手機(jī)和PC端兩方與通信無關(guān)的部分 (如Android手機(jī)界面設(shè)計、PC端怎樣將軟件運(yùn)行于后臺等)的實現(xiàn)過程不做過多介紹。同時對于信息在傳輸過程中,基本以字符串為主,發(fā)送方只需按照協(xié)議生成特定字符串,接收方只需按照協(xié)議拆分字符串即可獲取需要的信息,從而無需對數(shù)據(jù)進(jìn)行封裝和拆封工作,避免傳輸多余信息。

        4.3 數(shù)據(jù)庫操作實現(xiàn)

        4.3.1 簡單數(shù)據(jù)庫操作

        簡單數(shù)據(jù)操作指的是手機(jī)對數(shù)據(jù)庫的常用操作,即對數(shù)據(jù)庫進(jìn)行增加數(shù)據(jù)、刪除數(shù)據(jù)、更改數(shù)據(jù)3種操作,這3種操作特點是無需從數(shù)據(jù)庫返回信息。(且增加數(shù)據(jù)操作不包括將文件增加到數(shù)據(jù)庫)。對于這種數(shù)據(jù)庫操作,Android端首先發(fā)送數(shù)據(jù)包A,(其中包含字符 “1”和要操作的SQL語句),PC端接收數(shù)據(jù)包后以字符 “@@@”分割數(shù)據(jù)包,當(dāng)判斷出獲取的第一個字符是 “1”時,PC端明白了本次操作是簡單數(shù)據(jù)庫操作,因此直接執(zhí)行收到的SQL語句,執(zhí)行失敗或者成功都會向手機(jī)端返回相關(guān)信息(信息Y和Z),圖4為其操作流程圖

        4.3.2 查詢數(shù)據(jù)庫操作

        圖4 簡單數(shù)據(jù)庫操作流程

        查詢數(shù)據(jù)庫除了要執(zhí)行SQL語句外,還需要使用游標(biāo)獲取數(shù)據(jù)庫返回的查詢結(jié)果并將結(jié)果合成一個字符串發(fā)送到手機(jī)端。具體過程為:首先手機(jī)端發(fā)送數(shù)據(jù)包B(其中包含字符 “2”和要操作的SQL語句),PC端用同樣的方法拆分?jǐn)?shù)據(jù)包并判斷出第一個字符是 “2”即明白本次操作是查詢數(shù)據(jù)庫操作,因此立即執(zhí)行SQL語句,執(zhí)行完畢后會使用SQLFetch()方法配合strcat()方法將多項查詢結(jié)果以 “--”作為分隔符連接起來生成一個字符串。然后將其傳輸回手機(jī)端,手機(jī)端只需按 “--”拆分字符串即可獲取需要的信息。圖5為其操作流程圖。

        圖5 查詢數(shù)據(jù)庫操作流程

        4.3.3 文件上傳操作

        文件上傳相比前面兩種數(shù)據(jù)庫操作要復(fù)雜些,因為文件通常比一般信息要大許多,其傳輸過程需要在通信雙方TCP協(xié)議層之上 (即應(yīng)用層)設(shè)計一套通信協(xié)議。其實現(xiàn)過程的具體流程為:首先Android手機(jī)端發(fā)送數(shù)據(jù)包C(包含字符 “3”、SQL語句和文件名),PC端接收數(shù)據(jù)包并拆分?jǐn)?shù)據(jù)包判斷出第一個字符是 “3”即明白本次操作為文件上傳操作,此時PC端會立即根據(jù)收到文件名的后綴名創(chuàng)建出一個同類型的空文件 (這樣可以保證手機(jī)端傳輸?shù)奈募蚉C端聲場的文件類型的一致性)并向手機(jī)端發(fā)送信息T,表示PC端已經(jīng)準(zhǔn)備好文件的接收。手機(jī)端收到信息T后則開始向PC端進(jìn)行文件傳輸,完畢后PC端則將文件插入數(shù)據(jù)庫中。整個過程需要解決文件傳輸問題和文件入庫問題。第一:文件傳輸實質(zhì)是傳輸文件的二進(jìn)制流,但是文件由于較大,因此不能簡單的利用Socket的相關(guān)API一次性將文件的全部二進(jìn)制流傳輸完畢,需要分批多次傳送且順序不能錯,同時接收方也需要首先創(chuàng)建一個與發(fā)送方同類型的空文件,然后按正確順序?qū)⑹盏降亩M(jìn)制流寫入到空文件中。以下為手機(jī)端文件傳輸部分重要代碼。

        Android端:socket=new Socket(IP,Port);

        inputStream=new FileInputStream(pic);

        outputStream=socket.getOutputStream();

        writer=newOutputStreamWriter(outputStream);

        while ((temp=inputStream.read(buffer))!=-1){

        outputStream1.write(buffer,0,temp);

        outputStream1.flush();}

        PC端:PC端:fp=fopen(" 文件名 .后綴名","ab");

        while(1){

        rn=recv (sockConn,recvBuf,256,0);

        if(rn==0){

        break;}

        fwrite(recvBuf,1,rn,fp); }

        當(dāng)文件順利傳輸?shù)絇C端后,需要將文件入庫。由于Oracle數(shù)據(jù)庫特性,必須先執(zhí)行Insert語句向數(shù)據(jù)庫blob字段插入EMPTY_BLOB(),即空數(shù)據(jù),然后采用SQLPrepare()方法以 “準(zhǔn)備執(zhí)行”的方式執(zhí)行Updata語句,并使用SQLBindParameter()方法將數(shù)據(jù)庫中的Blob字段與程序中的緩沖區(qū)綁定,接著將PC收到的文件分批多次寫入到緩沖區(qū)中,最后使用SQLPutData方法將緩沖區(qū)內(nèi)容寫入到數(shù)據(jù)庫blob字段中。圖6為文件上傳到數(shù)據(jù)庫的流程圖,表1為以上涉及的每種信息所包含的具體內(nèi)容。

        圖6 文件上傳流程

        表1 信息內(nèi)容

        5 測試結(jié)果

        測試方法為:首先打開PC端的接收軟件,點擊Android端的 “測試連接”按鈕,若測試通過說明網(wǎng)絡(luò)連接已經(jīng)接通,此時可以編輯SQL語句并點擊 “執(zhí)行操作”按鈕實現(xiàn)對遠(yuǎn)程數(shù)據(jù)庫的操作。圖7為從數(shù)據(jù)庫中查詢出信息的效果圖。通過與常用方法 (即用Web服務(wù)器訪問數(shù)據(jù)庫的方法)進(jìn)行大量的測試對比表明:當(dāng)傳輸?shù)男畔⒖偭吭?KB-10KB間時,該方法能夠降低40%-70%的信息傳輸量,并縮短32%-45%的信息傳遞時間。當(dāng)傳輸?shù)男畔⒘吭?0KB-200KB間時,該方法能夠降低16%-40%的信息傳輸量并縮短9%-22%的信息傳遞時間,當(dāng)信息量>200KB時,該方法與常用方法相比差別不大。因此得出結(jié)論:該方法在傳輸信息總量不大的情況下,可以大大節(jié)約手機(jī)流量并提高訪問數(shù)據(jù)庫的效率和速度。

        6 結(jié)束語

        本文以Android手機(jī)與Oracle數(shù)據(jù)庫交互為例,摒棄了通過Web服務(wù)器訪問數(shù)據(jù)庫訪問的常用方法,提出了另一種智能設(shè)備訪問數(shù)據(jù)庫的方法并通過實驗驗證了該方法的可靠性和優(yōu)點,本文主要創(chuàng)新點在于:1將Socket通信技術(shù)與ODBC技術(shù)相結(jié)合提出了一種智能設(shè)備訪問遠(yuǎn)程數(shù)據(jù)庫的方法2設(shè)計了嚴(yán)謹(jǐn)?shù)耐ㄐ艆f(xié)議和數(shù)據(jù)庫操作機(jī)制,不僅能夠一定程度上節(jié)約手機(jī)流量而且能夠提高訪問數(shù)據(jù)庫的效率。對于需要用到智能設(shè)備訪問遠(yuǎn)程數(shù)據(jù)庫技術(shù)的領(lǐng)域 (如移動電子商務(wù)等)有一定實用價值和借鑒價值。

        圖7 測試效果

        [1]GONG Fuyan.Application and development of database technology[J].Programming Skills & Maintenance,2012,12(12):51-52 (in Chinese).[龔伏廷.淺談數(shù)據(jù)庫技術(shù)的應(yīng)用與發(fā)展[J].電腦編程技巧與維護(hù),2012,12 (12):51-52.]

        [2]WANG Shaoxiang,SHAO Yubin,LONG Hua.A data interaction method between Android phone and database[J].Journal of Zhengzhou University of Light Industry,2011,26 (6):28-30(in Chinese).[王紹祥,邵玉斌,龍華.Android手機(jī)與數(shù)據(jù)庫的一種數(shù)據(jù)交互方法[J].鄭州輕工業(yè)學(xué)院學(xué)報,2011,26(6):28-30.]

        [3]QUAN Zhongmin,PENG Xijun.An Android efficient and safe method to access the database based on JSON[J].Journal of Shaoguan University,2011,32 (12):16-20 (in Chinese).[權(quán)重民,彭昕昀.利用JSON實現(xiàn)Android高效、安全訪問遠(yuǎn)程數(shù)據(jù)庫的一種方式[J].韶關(guān)學(xué)院學(xué)報,2011,32 (12):16-20.]

        [4]YU Zhilong,CHEN Xiaofeng.Google android development introductory and practice[M].Beijing:Posts &Telecom Press,2009(in Chinese).[余志龍,陳小風(fēng).Google android開發(fā)入門與實戰(zhàn)[M].北京:人民郵電出版社,2009.]

        [5]LE Yan,YAO Shanglang,CHEN Xiaofeng.Google Android SDK development examples[M].Beijing:Posts & Telecom Press,2009(in Chinese).[勒巖,姚尚郎,陳小風(fēng),等.Google Android SDK開發(fā)范例大全[M].北京:人民郵電出版社,2009.]

        [6]CHEN Lihao.Real-time communication system based on B/S and C/S[J].Computer Engineering,2012,35 (15):27-28(in Chinese).[陳立浩.基于B/S和C/S的即時通信系統(tǒng)[J].計算機(jī)工程,2012,35 (15):27-28.]

        [7]YAN Bicheng,LI Feng.Communication mechanism between mobile terminal and remote computer[J].Computer Engineering,2010,36 (24):93-95 (in Chinese).[晏弼成,李峰.一種移動終端與遠(yuǎn)程計算機(jī)間的通信機(jī)制[J].計算機(jī)工程,2010,36 (24):93-95.]

        [8]HUANG Weimin.Design of real-time communication system client based on Android[J].Modern Electronics Technique,2011,34 (16):140-142 (in Chinese).[黃偉敏.Android平臺的即時通信系統(tǒng)客戶端設(shè)計方案[J].現(xiàn)代電子技術(shù),2011,34 (16):140-142.]

        [9]GENG Dongjiu,SUO Yue,CHEN Yu,et al.Remote access and control system based on Android phones[J].Journal of Computer Applications,2011,31 (2):559-561 (in Chinese).[耿東久,索岳,陳渝,等.基于Android手機(jī)的遠(yuǎn)程訪問和控制系統(tǒng)[J].計算機(jī)應(yīng)用,2011,31 (2):559-561.]

        [10]SONG Qiang,QI Guibao,SONG Zhanwei.H.264video surveillance design based on Android[J].Journal of Jilin University,2012,31 (2):272-278 (in Chinese).[宋強(qiáng),齊貴寶,宋占偉.基于Android系統(tǒng)的H.264視頻監(jiān)控設(shè)計[J].吉林大學(xué)學(xué)報 (信息科學(xué)版),2012,31 (2):272-278.]

        [11]CHEN Hao,LI Benfu.Mobile police system development based on Android[J].Science Technology and Engineering,2012,12 (4):911-913 (in Chinese).[陳浩,李本富.基于Android的移動警務(wù)系統(tǒng)開發(fā)[J].科學(xué)技術(shù)與工程,2012,12 (4):911-913.]

        猜你喜歡
        語句數(shù)據(jù)包遠(yuǎn)程
        讓人膽寒的“遠(yuǎn)程殺手”:彈道導(dǎo)彈
        軍事文摘(2022年20期)2023-01-10 07:18:38
        遠(yuǎn)程工作狂綜合征
        英語文摘(2021年11期)2021-12-31 03:25:18
        重點:語句銜接
        SmartSniff
        遠(yuǎn)程詐騙
        精彩語句
        基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計與實現(xiàn)
        如何搞定語句銜接題
        語文知識(2014年4期)2014-02-28 21:59:52
        視覺注意的數(shù)據(jù)包優(yōu)先級排序策略研究
        移動IPV6在改進(jìn)數(shù)據(jù)包發(fā)送路徑模型下性能分析
        日韩亚洲在线一区二区| 无码人妻一区二区三区免费视频| 妺妺跟我一起洗澡没忍住| 亚洲av成人精品日韩在线播放| 亚洲综合国产一区二区三区| 欧美国产日韩a在线视频| 国产91在线免费| 国产一区二区三区视频了| 丝袜美腿在线播放一区二区| 亚洲av专区国产一区| 国产爆乳无码一区二区麻豆| 亚洲国产欧美日韩欧美特级| 亚洲永久精品ww47| 久久综合给合久久狠狠狠9| 亚洲美女主播一区二区| 亚洲一区二区三区熟妇| 与最丰满美女老师爱爱视频| 午夜天堂av天堂久久久| 日本无码欧美一区精品久久| 免费观看激色视频网站| 国产欧美日韩在线观看| 亚洲天天综合色制服丝袜在线| 日本人妻伦理片在线观看| 色婷婷精品午夜在线播放| 新婚人妻不戴套国产精品| 国产精品久久久久久久妇| 国产96在线 | 亚洲| 99久久这里只精品国产免费| 日韩伦理av一区二区三区| 国产三级久久精品三级91| 国产美女做爰免费视频| 免费人成视频在线观看网站| 久久精品国产91久久性色tv| 精品亚洲不卡一区二区| 激情亚洲不卡一区二区| 丰满少妇高潮惨叫久久久| 无码福利写真片视频在线播放| 性欧美暴力猛交69hd| 精品人妻无码中文字幕在线| 青青草极品视频在线播放| 自拍偷区亚洲综合激情|