大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 语言创新 VB 6.0与大型数据库的无“数据源”连接

语言创新 VB 6.0与大型数据库的无“数据源”连接

时间: 2021-07-31 作者:daque

暂时,绝大普遍的数据库参考书都引见了odbc的细工摆设本领,大概引见了怎样在代码中举行odbc摆设。但这两种本领都有确定的控制性: 不是当步调最后实行并散发到用户手中后,还须要为用户摆设odbc,显得既烦恼又不适合专科软硬件的诉求;即是得编写搀杂的变动操纵体例备案表文献的步调,格外繁芜。正文从ado(activex data objects)动手,引见无需摆设数据源的几种常用巨型数据库贯穿本领。 正文所述的无“数据源”贯穿,意旨不是不须要数据源,要不贯穿无从谈起,而是不须要摆设备案数据源所举行的贯穿。odbc(open database connectivity,盛开式数据库贯穿)是用来贯穿各别数据源的规范编制程序谈话接口。很多作品中引见,在实行odbc时,必需开始摆设odbc情况,举行数据源的备案,而后本领在对数据库编制程序时,对数据源举行贯穿、考察和操纵,并供给了用pb或vb等谈话东西实行数据源备案的简直本领。那些本领不只搀杂繁芜,并且因为参数实质纷歧,摆设季节人发觉莫衷一是,不宜控制。 走近ado ado是微软供给的数据库考察本领。它被安排用来同新的数据考察层ole db provider一道共同处事,以供给通用数据考察(universal data access)本领。ole db是一个底层的数据考察接口,用它不妨考察百般数据源,囊括保守的联系型数据库、电子邮件体例及自设置的贸易东西等。 ado供给了一个熟习的、高层的对ole db的automation封装接口。对那些熟习rdo的步调员来说,不妨把ole db看作odbc启动步调,犹如rdo东西是odbc启动步调接口一律,ado东西是ole db的接口。同样,像各别的数据库体例须要它们本人的odbc启动步调一律,各别的数据源也诉求它们本人的ole db供给者(ole db provider)。暂时,固然ole db供给者比拟少,但微软正主动实行该本领,并安置用ole db代替odbc。 微软公司已颁布此后不会对vb sql/dblib举行晋级,并且odbc api因变量头等的编制程序办法也不为人们所爱好,以是,rdo此后将被以activex本领为普通的ado所代替。ado是鉴于ole db之上的本领,它经过里面的属性和本领供给一致的数据库考察接口。 1.ado组件 ● microsoft activex data objects (ado) :使存户端运用步调能经过ole db供给者考察和操纵数据库效劳器中的数据。 ● activex data objects extensions for ddl and security(adox) :将ado扩充为囊括创造、窜改和简略的形式东西,如表格和进程,以及囊括用来保护用户和组以及处置东西权力的安定东西。 ● activex data objects (multidimensional) (ado md): 将ado扩充为囊括指定到多维数据的东西,并承诺欣赏多维形式、查问立方和检索截止。 2.ado便宜 ● ado具备莫大的精巧性,它不妨运用沟通的编制程序形式贯穿到各别的数据供给者,而尽管给定供给者的一定个性。 ● 较低的外存占用率。 ● 具备长途数据效劳(rds)功效,经过rds不妨在一次往复进程中将数据从效劳器挪动到存户端运用步调或web页,并在存户端对数据举行处置后将革新截止归来效劳器。 ● 同保守的数据东西档次(dao和rdo)各别,ado不妨独力创造。不妨只创造一个“connection”东西,而后由多个独力的“recordset”东西来运用它。 ● odbc自己是以sql server、oracle等联系数据库动作考察东西,而ole db则不只限于此,它还不妨对电子邮件、文本文献、复合文献、数据表等形形色色的数据经过一致的接口举行存取。 ole db provider for odbc是ado的默许供给者,默许值是msdasql,即使简略贯穿字符串的provider=参数,ado将试图创造与该供给者的贯穿。 ado的贯穿办法重要可分为ole db privder办法与ole db provider for odbc办法。前者很鲜明是微软公司全力引荐的办法,对于ado或rds步调员来说,理念的情况是每个数据源都具备一个ole db接口,这比odbc办法要快且所需资源更少。 odbc provider承诺ado贯穿就任何odbc数据源。odbc启动步调对于现在运用的百般重要dbms都灵验,囊括sql server、access、foxpro,以及诸如oracle等非微软数据库产物。供给者将不受线程遏制,承诺运用unicode,并将扶助工作。 贯穿东西属性 connectionstring是connection东西的属性称呼,为可读写string典型,供给数据供给者或效劳供给者翻开到数据源的贯穿所须要的一定消息,囊括provider、driver、server、database、dsn、uid、pwd大概provider、data source、user、password、initial catalog等。 1.provider 字符串表白式,指定ole db数据或效劳供给者的称呼,不妨缺省。 普遍有三种供给者:数据供给者、效劳供给者和效劳组件。数据供给者具有本人的数据并将数据以表的方法表露给运用步调。效劳供给者将效劳封装,使ado运用步调中的功效得以夸大。效劳供给者也不妨进一步设置为效劳组件,效劳组件必需偕同其余效劳供给者或组件一道处事。 2.driver 字符串表白式,表白odbc启动步调的称呼,并不是odbc启动步调动静链接库(dll)的文献名。 有些启动步调是微软公司的产物,在安置操纵体例时就仍旧安置好了; 而有些数据库产物的启动步调由开拓数据库产物的软硬件公司随数据库产物一道供给,须要在安置数据库时采用安置后,才不妨运用。如:sybase数据库启动步调等。 3.server(srvr) 字符串表白式,数据库效劳称呼。 4.database(db) 字符串表白式,指定效劳器上的数据库称呼。纵然dsn设置仍旧指定了数据库,也不妨在dsn除外指定database参数再不贯穿到各别的数据库。 5.dsn(data source) 字符串表白式,在此为空,不必指定贯穿的odbc数据源的称呼。 6.uid(user id) 字符串表白式,为odbc数据源指定用户标识(用户账号名),指定用户必需有充满的权力。 7.pwd(password) 字符串表白式,为odbc数据源指定用户口令,必需有充满的权力。 8.persist security info 布尔典型,为true时,表白沿用集成安定体制;若为false,则表白不沿用集成安定体制。 无dsn(非dsn)贯穿 除去ado所设置的参数外,供给者不扶助任何一定贯穿参数,它将把任何非ado贯穿参数传播给odbc启动步调处置器。底下引见几种罕见数据库的处置本领。 1. visual foxpro [provider=msdasql.1]; ’大概为msdasql driver={driver name}; sourcedb=path; sourcetype=dbf 比方: cnna.connectionstring = “provider=msdasql; ” + “driver={microsoft visual foxpro driver};” + “sourcedb=d:\data\;” + “sourcetype=dbf” 2.sql server [provider=msdasql;] driver={driver name}; server=server; database=database; uid=user; pwd=password 比方: cnnb.connectionstring = “provider= msdasql;” + “driver={sql server};” + “server=servera;” + “database=pubs;” + “uid=sa;” + “pwd=yyuui” 3. sybase数据库 [provider=msdasql;] driver={driver name}; srvr=server; ’必需是srvr,不许是server db=database; ’不妨是db,也不妨是database dsn=; ’不妨简略 uid=user; pwd=passwod; persist security info=false 比方: cnnc.connectionstring= “provider=msdasql;” + “driver={sybase system 11};” + “srvr=serveru; ” + “dsn=;” + “db=dataa;” + “uid=sa;” + “pwd=dqwe;” + “persist security info=false” 4. oracle数据库 [provider=msdasql;] driver={driver name}; server=server; databasename=database; databasefile=path; dsn=; uid=user; pwd=password; 比方: cnnd.connectionstring = “provider=msdasql; ” + “driver={microsoft odbc for oracle};” + “server=webserver;” + “dsn=;” + “databasename=dataall;” + “databasefile=d:\data\;” + “uid=dba;” + “pwd=killer” 运用范例 底下以sybase 11.9.2为例,体例一个大略的处事职员处置步调,引见ado的简直实行本领和办法。数据库称呼为workerdb,只囊括一个表(worker),其构造如次: 字段称呼    宽窄       解释 code nchar(4) 代号 name char(8) 全名 …… …… …… 开始安置ado,在vb的“工程”/“援用”对话框中采用“activex data object 2. 5 library”(adodb)。个中“ado recordset 2. 5 library”是一个存户端的本子(ador),由于不须要connection东西来创造与长途数据源的接洽,以是ador对于存户端的数据考察来说仍旧充满了。 底下是局部重要代码: 1. 处置代码 ’在工程菜单中援用microsoft activex data object 2. 5 library ’证明ado贯穿东西为工程级全部变量 public cndbase as new adodb.connection …… ’自设置贯穿数据库因变量 public function connectdbase(strconnect as string) as boolean on error goto errhandle cndbase.connectionstring = strconnect cndbase.open cndbase.cursorlocation = aduseclient connectdbase = true exit function errhandle: connectdbase = false end function private sub form_load() …… 输出 varserver ’效劳称呼 vardbase ’数据库称呼 varuser ’用户称呼 varpassword ’用户口令 …… ’贯穿数据库,采用无dsn贯穿本领 strconnect = “provider=msdasql;” +“driver={” & vardriver &“};” +“srvr=” & varserver & “;” +“db=” & vardbase & “;” +“dsn=;” +“uid=” & varuser & “;” +“pwd=” & varpassword & “;” + “persist security info=false” ’不沿用集成安定体制 if connectdbase(strconnect) then exit sub else myexit = msgbox(“数据库贯穿波折!请查看贯穿树立消息。”, vbokonly, “缺点提醒:”) unload me endif errhand: myexit = msgbox(“缺点步调:” & err. source & chr(10) & “缺点代码:” & err. number & chr(10) & “缺点消息:” & err.description, vbabortretryignore, “缺点提醒:”) if myexit = 3 then err.clear unload me else if myexit = 4 then err.clear resume else err.clear resume next end if end if end sub private sub form_unload() …… cndbase.close set cndbase = nothing end sub 2. 建表 codbase.commandtext=“{call creatable (?) }” codbase.commandtype = adcmdtext codbase.name = “creatable” ’设定output的参数 set param = codbase.createparameter(“flag”, adinteger, adparamoutput) codbase. parameters. append param set codbase. activeconnection = cndbase codbase. execute if codbase. parameters(0) = 0 then myexit = msgbox(“建表胜利!”, vbokonly, “步调提醒:”) else myexit = msgbox(“建表波折!”, vbokonly, “缺点提醒:”) endif …… 3. 窜改 rsdbase. open“worker”,cndbase,adopendynamic,adlockpessimistic,adcmdtable rsdbase. movefirst cndbase. begintrans ’在记载会合举行轮回变动 do until rsdbase.eof ’减少20元职务代码为1的职员的报酬 if rsdbase! duty = 1 then rsdbase! salary = rsdbase! salary + 20 end if rsdbase. movenext loop rsdbase.updatebatch …… 4. 统计 strsql = “select avg(salary), sum(salary) from worker” rsdbase. cursorlocation = aduseclient rsdbase. open strsql,cndbase salaryavg = rsdbase(0) ’平衡报酬 salarysum = rsdbase(1) ’报酬总和 …… rsdbase .close 5. 保存进程creatable. sql create procedure dbo.creatable(@return_value integer output) as begin create table workerdb..worker ( code nchar(4) not null , name char(8) not null , year nchar(4) , month nchar(2) , day nchar(2) , salary numeric(18,2) , duty nchar(1) ) if @@error != 0 begin select @return_value = 1   end  else begin select @return_value = 0 end return end

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.