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
主站蜘蛛池模板: 国产一在线观看| 久久伊人久久亚洲综合| 欧美日韩亚洲综合在线观看| 亚洲成人免费看| 91日本在线观看亚洲精品| 天堂中文在线资源| 日本人又色又爽的视频| 露脸真实国语乱在线观看| 亚洲精品欧美日本中文字幕| 欧美黄色a| 99热这里只有免费国产精品| 免费在线观看av| 午夜福利视频一区| 欧美午夜性视频| 无码aⅴ精品一区二区三区| 久久精品国产999大香线焦| 精品久久久无码专区中文字幕| 国产亚洲精品自在线| 999国内精品视频免费| 亚洲无码免费黄色网址| 亚洲黄网在线| 亚洲精品成人福利在线电影| 亚洲天堂网2014| 欧美日韩精品一区二区视频| 国产精品丝袜在线| 免费高清自慰一区二区三区| 亚洲精品免费网站| 亚洲美女一级毛片| 亚洲无线国产观看| 18禁不卡免费网站| 国产99视频精品免费观看9e| 成色7777精品在线| 无码中文AⅤ在线观看| 黄色网页在线观看| 欧美人人干| 亚洲国产精品成人久久综合影院| 日本a∨在线观看| 久久国产精品国产自线拍| 国产一级毛片在线| 国产精品美乳| 四虎国产成人免费观看| 玖玖免费视频在线观看| 亚洲精品福利网站| 亚洲av无码人妻| 91欧美亚洲国产五月天| 日韩无码真实干出血视频| 精品无码国产自产野外拍在线| 美女毛片在线| 亚洲第一区在线| 欧美精品H在线播放| 91青青草视频| 国产一级小视频| 国产精品亚洲αv天堂无码| 亚国产欧美在线人成| 自拍亚洲欧美精品| 激情网址在线观看| 999精品色在线观看| av一区二区三区高清久久| 91原创视频在线| 国产一区二区福利| 久久公开视频| 蝌蚪国产精品视频第一页| 国产精品区视频中文字幕| 国产在线麻豆波多野结衣| 丁香综合在线| 国产精品成人一区二区不卡 | 天天色天天综合| 毛片一级在线| 亚洲 欧美 偷自乱 图片 | 国产精品无码AⅤ在线观看播放| 大陆国产精品视频| 成人无码区免费视频网站蜜臀| 操美女免费网站| 日韩精品一区二区三区免费在线观看| 丰满人妻中出白浆| 国产精品露脸视频| 热伊人99re久久精品最新地| 欧美精品色视频| 99国产精品国产| 日韩av无码DVD| 老司机久久99久久精品播放| 重口调教一区二区视频|