999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Caché數(shù)據(jù)庫(kù)C/S架構(gòu)數(shù)據(jù)交互的研究與分析

2017-08-24 14:50:25李成亮姚偉
計(jì)算機(jī)時(shí)代 2017年8期
關(guān)鍵詞:方法研究

李成亮+姚偉

摘 要: Caché數(shù)據(jù)庫(kù)提供了便捷、穩(wěn)定、高效的C/S架構(gòu)訪問(wèn)服務(wù)。介紹了三種VB語(yǔ)言訪問(wèn)Caché數(shù)據(jù)庫(kù)的方式,即通過(guò)ODBC方式、COM方式、Web Service方式,并采用統(tǒng)一的DataGrid控件對(duì)返回的數(shù)據(jù)集進(jìn)行了顯示。結(jié)合Caché以多維數(shù)組存儲(chǔ)數(shù)據(jù)的優(yōu)勢(shì),對(duì)三種方式的訪問(wèn)效率進(jìn)行了測(cè)試,并且根據(jù)每種方式的特點(diǎn),分析了三種方式的優(yōu)缺點(diǎn),為Caché數(shù)據(jù)庫(kù)C/S架構(gòu)的開(kāi)發(fā)提供了參考。

關(guān)鍵詞: Caché; C/S架構(gòu); VB; 方法研究

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)08-20-04

Abstract: Database Caché provides a convenient, stable and efficient C/S architecture access service. This paper introduces three methods to access the Caché database with VB language, i.e. the COM method, ODBC method and Web Service method, and a uniform DataGrid widget is adopted to display the returned data set. With the advantage that Caché stores data in multidimensional arrays, the access efficiency is tested in three ways, and the advantages and disadvantages of three methods are analyzed according to the characteristics of each method respectively to provide a reference for the development of Caché database in C/S architecture.

Key words: Caché; C/S architecture; VB; method research

0 引言

為了適應(yīng)Internet 迅猛發(fā)展對(duì)數(shù)據(jù)庫(kù)信息技術(shù)的需求,InterSystems公司研發(fā)的“后關(guān)系型”數(shù)據(jù)庫(kù)(Post-Relational Database)Caché融合了對(duì)象數(shù)據(jù)庫(kù)訪問(wèn)、高性能的SQL訪問(wèn)、強(qiáng)大的多維數(shù)據(jù)訪問(wèn)這三種方法,其推出的用戶接口支持大多數(shù)通用的開(kāi)發(fā)工具(如VB、Delphi、Java或者C++),可以讓程序員根據(jù)自己熟悉的程序設(shè)計(jì)語(yǔ)言快速地進(jìn)行開(kāi)發(fā)[1-2]。

VB語(yǔ)言具有強(qiáng)大的Windows界面表現(xiàn)功能,采用事件驅(qū)動(dòng)機(jī)制,程序員可以輕松地使用VB語(yǔ)言對(duì)數(shù)據(jù)庫(kù)進(jìn)行C/S架構(gòu)的開(kāi)發(fā)。本文基于VB語(yǔ)言,詳細(xì)介紹了三種方式訪問(wèn)Caché數(shù)據(jù)庫(kù),即傳統(tǒng)的關(guān)系型ODBC(Open Database Connectivity,開(kāi)放數(shù)據(jù)庫(kù)連接)方式、COM(Component Object Model,組件對(duì)象模型)方式、Web Service方式。結(jié)合Caché以多維數(shù)組存儲(chǔ)數(shù)據(jù)的優(yōu)勢(shì),對(duì)這三種方式的訪問(wèn)效率進(jìn)行測(cè)試,根據(jù)每種方式的特點(diǎn),分析三種方式的優(yōu)缺點(diǎn),以期為Caché數(shù)據(jù)庫(kù)C/S架構(gòu)的開(kāi)發(fā)提供參考。

1 訪問(wèn)Caché數(shù)據(jù)庫(kù)的方式

1.1 ODBC方式

ODBC是目前訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)最主要的方法。它提供了一系列通用的數(shù)據(jù)庫(kù)管理的標(biāo)準(zhǔn)接口,使得編程人員的開(kāi)發(fā)不必了解底層的DBMS,即通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)API(Application Programming Interface,應(yīng)用程序編程接口),可以對(duì)不同的DBMS的數(shù)據(jù)庫(kù)進(jìn)行操作[5]。

VB訪問(wèn)Caché數(shù)據(jù)庫(kù)時(shí),須首先通過(guò)ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源,該數(shù)據(jù)源包括數(shù)據(jù)源名稱、數(shù)據(jù)庫(kù)路徑、數(shù)據(jù)庫(kù)類型、ODBC驅(qū)動(dòng)程序等信息。

1.2 COM方式

COM是微軟公司開(kāi)發(fā)的標(biāo)準(zhǔn),依照COM標(biāo)準(zhǔn)開(kāi)發(fā)出來(lái)的組件(以二進(jìn)制形式存在)可以直接嵌入到其他支持COM的程序中。COM組件中含有類型庫(kù)(Type Library),在類型庫(kù)中定義了組件的功能、類型信息及調(diào)用方法。當(dāng)準(zhǔn)備訪問(wèn)COM組件時(shí),將首先獲得類型庫(kù)的信息,然后根據(jù)類型庫(kù)的描述去去訪問(wèn)COM組件[3]。

Caché數(shù)據(jù)庫(kù)提供的COM組件,名為CacheObject。VB在客戶端引用,通過(guò)該組件可以直接進(jìn)行SQL查詢,或者調(diào)用Caché類中的查詢方法,返回結(jié)果集對(duì)象供客戶端使用,從而實(shí)現(xiàn)客戶端與服務(wù)器端之間的數(shù)據(jù)交互。

1.3 Web Service方式

Web Service是一種基于XML、HTTP的分布式組件技術(shù),是一個(gè)通過(guò)Web進(jìn)行調(diào)用的API,不依賴于平臺(tái)、語(yǔ)言,實(shí)現(xiàn)了真正意義上的獨(dú)立性。

Caché數(shù)據(jù)庫(kù)在對(duì)Web Service的開(kāi)發(fā)和使用上提供了良好的支持和高效的開(kāi)發(fā)。VB引用SOAP庫(kù)文件通過(guò)URL直接調(diào)用接口的函數(shù)。

2 VB連接Caché數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

本文VB開(kāi)發(fā)的環(huán)境為Windows 7,IP地址為200.200.200.18,Caché數(shù)據(jù)庫(kù)部署在10.10.50.66服務(wù)器上,端口號(hào)為1972,數(shù)據(jù)庫(kù)的命名空間為DHC-APP。

2.1 ODBC方式的實(shí)現(xiàn)

在本機(jī)操作系統(tǒng)ODBC數(shù)據(jù)源管理器中選擇“InterSystems ODBC35”驅(qū)動(dòng)程序,系統(tǒng)數(shù)據(jù)源的配置界面如圖1所示。

點(diǎn)擊“Test Connection”,顯示“Connectivity test completed successfully!”則配置成功。

在VB工程中先引用ADO對(duì)象,定義其子對(duì)象Connection對(duì)象、Recordset對(duì)象分別為cn,rs。

連接Caché數(shù)據(jù)庫(kù)代碼為:

cn.ConnectionString="Data Source=DHC-APP"

2.2 COM方式的實(shí)現(xiàn)

CacheObject的類型庫(kù)中包含的接口如表1所示[3]。

在VB工程中引用CacheObject.dll,定義工廠對(duì)象及連接數(shù)據(jù)庫(kù)的代碼為:

Dim factory As New CacheObject.factory

ConStr="cn_iptcp:10.10.50.66[1972]:DHC-APP"

If factory.Connect(ConStr)=True Then

MsgBox "成功", vbOKOnly, "成功"

End If

2.3 Web Service方式的實(shí)現(xiàn)

VB訪問(wèn)Web Service的方法有幾種,本文選用在VB中引用Microsoft Soap Type Library 3.0,訪問(wèn)數(shù)據(jù)庫(kù)Web Service的代碼為:

Dim soapClient As New SoapClient30

soapClient.MSSoapInit "http://10.10.50.66/dthealth/web/

PHYZPaiCheGL.MyService.cls?wsdl"

3 VB數(shù)據(jù)查詢、顯示及效率測(cè)試分析

本文查詢Caché數(shù)據(jù)庫(kù)中表名為PA_ADM,記錄有20萬(wàn),查詢的日期為2015-10-14,需要查詢的字段為PAADM_ADMNo,PAADM_AdmDate,PAADM_AdmTime,PAADM_Type,PAADM_CreateUser,對(duì)返回的數(shù)據(jù)集采用DataGrid控件進(jìn)行顯示。Caché數(shù)據(jù)庫(kù)以多維數(shù)組存儲(chǔ),在服務(wù)器端開(kāi)發(fā)中,采用遍歷節(jié)點(diǎn)的方法以提高效率[4]。

3.1 ODBC方式查詢及數(shù)據(jù)顯示

VB直接采用標(biāo)準(zhǔn)SQL語(yǔ)言進(jìn)行數(shù)據(jù)查詢,代碼為:

cn.Open

rs.Open "SELECT PAADM_ADMNo, PAADM_AdmDate,

PAADM_AdmTime, PAADM_Type, PAADM_CreateUser

FROM PA_Adm WHERE PAADM_AdmDate

='2015-10-14' ", cn, adOpenKeyset, adLockOptimistic

由于返回的為標(biāo)準(zhǔn)記錄集,所以可以直接作為DataGrid的數(shù)據(jù)源。代碼為:

Set DataGrid1.DataSource=rs

3.2 COM方式查詢及數(shù)據(jù)顯示

VB通過(guò)COM方式查詢數(shù)據(jù)有兩種方法,即DynamicSQL()、ResultSet()。DynamicSQL()將SQL語(yǔ)句作為入?yún)ⅲ笈_(tái)對(duì)其解析,本質(zhì)還是使用SQL語(yǔ)言訪問(wèn);ResultSet()直接調(diào)用Caché的類方法進(jìn)行查詢。本文采用ResultSet()方法,代碼為:

Dim obj As Object

Dim ok As Boolean

Set obj=factory.ResultSet("PHYZPaiCheGL.Web

.FuzzyQuery2", "QueryPAAdm")

ok=obj.Execute("14/10/2015", "14/10/2015")

類方法QueryPAAdm中采用$o查詢的部分代碼為:

s pRowID=""

f aDate=StartDate:1:EndDate d

.f s pRowID=$o(^PAADMi("AdmDateCurr",aDate,

pRowID)) q:pRowID="" d

..s ADMNo=$p(^PAADM(pRowID),"^",81)

..s ADMDate=$p(^PAADM(pRowID),"^",6)

..s ADMDate=$zdt(ADMDate,4)

..s ADMTime=$p(^PAADM(pRowID),"^",7)

..s ADMTime=$zt(ADMTime,1)

..s ADMType=$p(^PAADM(pRowID),"^",2)

..s ADMUser=$p(^PAADM(pRowID),"^",43)

由于返回的記錄集需進(jìn)行處理,VB處理的形式不惟一,本文采用數(shù)組的形式存儲(chǔ),循環(huán)賦值給記錄集,從而作為DataGrid的數(shù)據(jù)源。部分代碼為:

以數(shù)組形式存儲(chǔ)

Dim aa()

Dim j As Integer

j=0

While obj.Next()

aa(0, j)=obj.GetData(1)

aa(1, j)=obj.GetData(2)

aa(2, j)=obj.GetData(3)

aa(3, j)=obj.GetData(4)

aa(4, j)=obj.GetData(5)

j=j+1

Wend

循環(huán)賦值給記錄集

Set adoRecordset=New ADODB.Recordset

For n=0 To j

With adoRecordset

For i=0 To .Fields.Count-1

.Fields(i).Value=aa(i, n)

Next i

.MoveNext

End With

Next n

數(shù)據(jù)顯示

Set DataGrid1.DataSource=adoRecordset

3.3 Web Service方式查詢

直接采用soapClient對(duì)象調(diào)用Web Service中的GetPAADM()方法,返回結(jié)果保存在變量中。

Dim text

text=soapClient.GetPAADM("14/10/2015", "14/10/2015")

Web Service中GetPAADM方法采用$o查詢的部分代碼為:

S retStr=""

S retStr=##class(%GlobalCharacterStream).%New()

d retStr.Rewind()

d retStr.Write("")

S ret=0

s pRowID=""

f aDate=StartDate:1:EndDate d

.f s pRowID=$o(^PAADMi("AdmDateCurr",aDate,

pRowID)) q:pRowID="" d

..s myobj=##class(Sample.ToResultPAADM).%New()

..s myobj.aDMNo=$p(^PAADM(pRowID),"^",81)

..s myobj.aDMDate=$p(^PAADM(pRowID),"^",6)

..s myobj.aDMDate=$zdt(myobj.aDMDate,4)

..s myobj.aDMTime=$p(^PAADM(pRowID),"^",7)

..s myobj.aDMTime=$zt(myobj.aDMTime,1)

..s myobj.aDMType=$p(^PAADM(pRowID),"^",2)

..s myobj.aDMUser=$p(^PAADM(pRowID),"^",43)

..S Xml=##class(%GlobalCharacterStream).%New()

..S ret=myobj.XMLExportToStream(.Xml,"HIS")

..q:ret=0

..d retStr.CopyFrom(Xml)

d retStr.Write("

")

q retStr

Web Service返回的記錄集為XML格式,VB處理XML的方式也不惟一,本文采用一種較為方便的方法:將XML數(shù)據(jù)寫(xiě)入文件,將文件導(dǎo)入Access數(shù)據(jù)庫(kù)表中,查詢表中的數(shù)據(jù)作為DataGrid的數(shù)據(jù)源。

寫(xiě)入文件

Open "C:\sample.xml" For Output As #1

Print #1, text

Close #1

將XML文件讀入Access數(shù)據(jù)庫(kù)中

Const acAppendData=2

Set objAccess=CreateObject("Access.Application")

objAccess.OpenCurrentDatabase "C:\Scripts\Test.mdb"

objAccess.ImportXML "C:\sample.xml", acAppendData

顯示數(shù)據(jù)

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

cn.Open "Driver={Microsoft Access Driver (*.mdb)};

DBQ=C:\Scripts\Test.mdb"

rs.CursorLocation=adUseClient

rs.Open "select * from HIS", cn, adOpenKeyset,

adLockOptimistic

Set DataGrid1.DataSource=rs

3.4 查詢效率測(cè)試分析

本文查詢效率測(cè)試包括兩方面:一是測(cè)試查詢的效率;二是顯示數(shù)據(jù)的效率。

測(cè)試查詢的思路:采用VB中Timer函數(shù),在提交參數(shù)前、返回?cái)?shù)據(jù)后分別設(shè)置時(shí)間點(diǎn),每次查詢操作執(zhí)行100次取平均值,通過(guò)計(jì)算用時(shí)來(lái)比較每種查詢方法的效率。

測(cè)試顯示的思路:在返回?cái)?shù)據(jù)后、DataGrid顯示數(shù)據(jù)后分別設(shè)置時(shí)間點(diǎn),通過(guò)計(jì)算用時(shí)來(lái)比較每種顯示方法的效率。

本文在同一臺(tái)客戶端進(jìn)行測(cè)試,忽略網(wǎng)絡(luò)因素的影響,其結(jié)果如表2所示(單位:秒)。

根據(jù)各種方式的形式特征,歸納出三種方式訪問(wèn)數(shù)據(jù)庫(kù)的優(yōu)缺點(diǎn),如表3所示。

4 結(jié)論

基于C/S架構(gòu),Caché數(shù)據(jù)庫(kù)提供了三種方式訪問(wèn)。本文采用功能強(qiáng)大的VB語(yǔ)言,通過(guò)ODBC方式、COM方式、Web Service方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),并采用DataGrid控件對(duì)返回的數(shù)據(jù)集進(jìn)行顯示。結(jié)合Caché以多維數(shù)組存儲(chǔ)數(shù)據(jù)的優(yōu)勢(shì),對(duì)三種方式的訪問(wèn)效率進(jìn)行了測(cè)試,可以得出以下結(jié)論:

⑴ ODBC方式代碼簡(jiǎn)單,通俗易懂。但在多表查詢或數(shù)據(jù)訪問(wèn)量很大的情況下,查詢時(shí)間明顯增加;

⑵ COM方式包含了SQL訪問(wèn)和工廠對(duì)象訪問(wèn),SQL訪問(wèn)在某種程度可以代替ODBC方式,但返回的數(shù)據(jù)集仍需進(jìn)行處理方可使用DataGrid控件顯示。

在實(shí)際運(yùn)用過(guò)程中,為提高查詢的效率,通常采用COM方式中的工廠對(duì)象方法,對(duì)返回的記錄集可以根據(jù)具體情況靈活使用,但如何快速、簡(jiǎn)便地操作記錄集有待進(jìn)一步研究。

參考文獻(xiàn)(References):

[1] 雷舜東,吳幫華,黃海瑩,李玉明,張紅.Caché數(shù)據(jù)庫(kù)在醫(yī)院信息系統(tǒng)中的優(yōu)勢(shì)[J].實(shí)用醫(yī)院臨床雜志,2012.1:162-165

[2] 宗寧.Caché數(shù)據(jù)庫(kù)中Web Service的開(kāi)發(fā)與應(yīng)用[J].電腦編程技巧與維護(hù),2010.22:43-44

[3] Jason, Jeffery, Robert, Ryan. Caché' Developer's Guide to Object Oriented Software Development[M](未出版),2004.

[4] 李成亮,姚偉.Caché數(shù)據(jù)庫(kù)簡(jiǎn)單模糊查詢的研究與分析[J].計(jì)算機(jī)時(shí)代,2017.1:51-54

[5] 明日科技.Visual Basic從入門(mén)到精通[M].清華大學(xué)出版社,2008.

猜你喜歡
方法研究
基于綠色理念下巖土工程技術(shù)創(chuàng)新方法與實(shí)踐
中職院校體育教學(xué)中滲透德育教育方法研究
對(duì)林業(yè)資源與林業(yè)造林方法的探索與研究
新時(shí)期加強(qiáng)黨內(nèi)法規(guī)制度建設(shè)的方法研究
淺談初中數(shù)學(xué)方程教學(xué)
淺析體育教學(xué)新方法的落實(shí)及探究
筏板基礎(chǔ)設(shè)計(jì)與計(jì)算方法研究
人間(2016年30期)2016-12-03 21:46:13
探尋提高農(nóng)村初中生寫(xiě)作水平的方法
初中數(shù)學(xué)教學(xué)中情境創(chuàng)設(shè)的研究
如何提高學(xué)前教育專業(yè)聲樂(lè)課的教學(xué)質(zhì)量
戲劇之家(2016年22期)2016-11-30 18:32:23
主站蜘蛛池模板: 中日无码在线观看| 波多野吉衣一区二区三区av| 欧美爱爱网| 片在线无码观看| 午夜老司机永久免费看片| 日韩免费毛片视频| 欧美在线一级片| 亚洲日韩欧美在线观看| 色噜噜在线观看| 97色婷婷成人综合在线观看| 高h视频在线| 欧美日韩国产成人在线观看| 成人另类稀缺在线观看| 四虎国产精品永久一区| 国产精品视频白浆免费视频| 四虎亚洲国产成人久久精品| 日本国产一区在线观看| 精品国产香蕉在线播出| 人人爽人人爽人人片| 久久国产香蕉| 伊人成人在线视频| 在线色国产| 美女被操91视频| 欧美一区二区三区欧美日韩亚洲 | 天堂av综合网| 无码区日韩专区免费系列| 久久不卡国产精品无码| 综1合AV在线播放| 视频二区国产精品职场同事| 国产熟睡乱子伦视频网站| 久久久久中文字幕精品视频| 亚洲AⅤ波多系列中文字幕| 亚洲天堂视频在线观看| 在线播放91| 久久美女精品国产精品亚洲| 中日韩一区二区三区中文免费视频 | a色毛片免费视频| 国产传媒一区二区三区四区五区| 天堂在线www网亚洲| 亚洲精品无码在线播放网站| 国产一级在线观看www色| 国产人成在线视频| 亚洲天堂精品在线观看| 青青草欧美| 国产精品一区二区在线播放| 亚洲国产看片基地久久1024 | 国内精品自在欧美一区| 九九热这里只有国产精品| 美女啪啪无遮挡| 亚洲无码高清一区| 九九热精品视频在线| 国产精品免费电影| 一本色道久久88| 国产AV无码专区亚洲A∨毛片| 5388国产亚洲欧美在线观看| 精品无码国产自产野外拍在线| 亚国产欧美在线人成| 精品国产Av电影无码久久久| 一本无码在线观看| 999国内精品久久免费视频| 成人国产精品2021| 蝌蚪国产精品视频第一页| 麻豆AV网站免费进入| 国产精鲁鲁网在线视频| 久久情精品国产品免费| 欧美一级夜夜爽| 国产极品嫩模在线观看91| 国产激情无码一区二区三区免费| 久久精品午夜视频| 8090成人午夜精品| 男女猛烈无遮挡午夜视频| 国产迷奸在线看| 久久网综合| 婷婷五月在线视频| 久久网综合| 欧美精品v| 久久国产亚洲欧美日韩精品| 91无码国产视频| 亚洲欧美成人影院| 免费A级毛片无码免费视频| 国产亚洲男人的天堂在线观看| 国产精品三级专区|