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
主站蜘蛛池模板: 污视频日本| 日本a级免费| 在线欧美日韩| 日韩一区二区三免费高清| 久久黄色免费电影| 97在线国产视频| 欧美福利在线观看| 九九香蕉视频| 亚洲九九视频| JIZZ亚洲国产| 国产剧情无码视频在线观看| 超清无码熟妇人妻AV在线绿巨人| 国产精品成人免费综合| 最新日韩AV网址在线观看| 亚洲va欧美va国产综合下载| 天堂在线www网亚洲| www.亚洲一区| 欧美日韩在线第一页| 无码国内精品人妻少妇蜜桃视频| 国产伦片中文免费观看| 欧美成人精品一级在线观看| 久久精品人妻中文视频| 成人福利在线看| 26uuu国产精品视频| 欧美亚洲日韩中文| 97视频在线观看免费视频| 911亚洲精品| 欧美午夜在线观看| 无码福利日韩神码福利片| 97se亚洲综合在线天天| 香蕉蕉亚亚洲aav综合| 亚洲美女久久| 美女一区二区在线观看| 国产福利免费在线观看| 日韩A级毛片一区二区三区| 国产成人AV大片大片在线播放 | 中国黄色一级视频| 亚洲欧美日韩动漫| 久久精品人人做人人综合试看| 在线观看国产精品一区| 国产高潮视频在线观看| 四虎精品国产永久在线观看| 欧美成a人片在线观看| 91人人妻人人做人人爽男同| 热久久这里是精品6免费观看| 欧美视频在线观看第一页| 国产va在线观看免费| 中文无码影院| 人妻无码AⅤ中文字| 一区二区三区四区在线| 久久久无码人妻精品无码| 香蕉eeww99国产在线观看| 欧美成人精品高清在线下载| 精品无码国产一区二区三区AV| 999国产精品永久免费视频精品久久| 亚洲伊人天堂| 99热这里只有精品5| 国产无码网站在线观看| 中文字幕va| 国产人碰人摸人爱免费视频| 最新亚洲人成无码网站欣赏网| 日韩高清在线观看不卡一区二区 | 国产最新无码专区在线| 4虎影视国产在线观看精品| 国产精品自拍露脸视频| 漂亮人妻被中出中文字幕久久| 国产精品视频导航| 国产99视频免费精品是看6| 成色7777精品在线| 国产女人综合久久精品视| 毛片手机在线看| 国产成人综合欧美精品久久| 夜精品a一区二区三区| 香蕉在线视频网站| 日韩欧美在线观看| 丰满人妻一区二区三区视频| 欧美日韩国产成人高清视频| 国产成人精品三级| 黄色在线网| 欧美精品一区在线看| 亚洲三级视频在线观看| 国产成年女人特黄特色大片免费|