Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ViualBasic ->正文

VB与大型数据库无数据源的连接

来源:Linuxdby.com 作者:Webmaster 时间:2007-06-05 点击: [收藏] [投稿]

cnna.ConnectionString=“PROVIDER=MSDASQL;”

“DRIVER={MicrosoftVisualFoxproDriver};”

“SourceDB=D:\data\;”

“SourceType=DBF”

2.SQLServer

[PROVIDER=MSDASQL;]

DRIVER={DriverName};

SERVER=server;

DATABASE=database;

UID=user;

PWD=password

例如:

cnnb.ConnectionString=“PROVIDER=

MSDASQL;”

“DRIVER={SQLServer};”

“SERVER=servera;”

“DATABASE=pubs;”

“UID=sa;”

“PWD=yyuui”

3.Sybase数据库

[PROVIDER=MSDASQL;]

DRIVER={DriverName};

SRVR=server;’必须是SRVR,不能是SERVER

DB=database;’可以是DB,也可以是DATABASE

DSN=;’可以省略

UID=user;

PWD=passwod;

PERSISTSECURITYINFO=False

例如:

cnnc.ConnectionString=

“PROVIDER=MSDASQL;”

“DRIVER={SybaseSystem11};”

“SRVR=serveru;”

“DSN=;”

“DB=dataa;”

“UID=sa;”

“PWD=dqwe;”

“PERSISTSECURITYINFO=False”

4.Oracle数据库

[PROVIDER=MSDASQL;]

DRIVER={DriverName};

SERVER=server;

databasename=database;

databasefile=path;

DSN=;

UID=user;

PWD=password;

例如:

cnnd.ConnectionString=

“PROVIDER=MSDASQL;”

“DRIVER={MicrosoftODBCforOracle};”

“SERVER=Webserver;”

“DSN=;”

“databasename=dataall;”

“databasefile=d:\data\;”

“UID=dba;”

“PWD=killer”

应用实例

下面以Sybase11.9.2为例,编制一个简单的工作人员管理程序,介绍ADO的具体实现方法和步骤。数据库名称为Workerdb,只包括一个表(Worker),其结构如下:

字段名称    宽度       注释

codenchar(4)代号

namechar(8)姓名

………………

首先安装ADO,在VB的“工程”/“引用”对话框中选择“ActiveXDataObject2.5Library”(ADODB)。其中“ADORecordset2.5Library”是一个客户端的版本(ADOR),因为不需要Connection对象来建立与远程数据源的联系,所以ADOR对于客户端的数据访问来说已经足够了。下面是部分主要代码:

1.处理代码

’在工程菜单中引用MicrosoftActiveXDataObject2.5Library

’声明ADO连接对象为工程级全局变量

PubliccndbaseAsNewADODB.Connection

……

’自定义连接数据库函数

PublicFunctionConnectDbase(StrConnectAsString)AsBoolean

OnErrorGoToErrHandle

cndbase.ConnectionString=StrConnect

cndbase.Open

cndbase.CursorLocation=adUseClient

ConnectDbase=True

ExitFunction

ErrHandle:

ConnectDbase=False

EndFunction

PrivateSubForm_Load()

……

输入VarServer’服务名称

VarDbase’数据库名称

VarUser’用户名称

VarPassword’用户口令

……

’连接数据库,采取无DSN连接方法

StrConnect=“Provider=MSDASQL;”

“Driver={”&VarDriver&“};”

“SRVR=”&VarServer&“;”

“DB=”&VarDbase&“;”

“DSN=;”

“UID=”&VarUser&“;”

“PWD=”&VarPassword&“;”

“PersistSecurityInfo=False”’不采用集成安全机制

ifConnectDbase(StrConnect)Then

ExitSub

else

myexit=MsgBox(“数据库连接失败!请检查连接设置信息。”,vbOKOnly,“错误提示:”)

Unloadme

endif

ErrHand:

myexit=MsgBox(“错误程序:”&Err.Source&Chr(10)&“错误代码:”&Err.Number&Chr(10)&“错误信息:”&Err.Description,VbAbortRetryIgnore,“错误提示:”)

Ifmyexit=3Then

Err.Clear

UnloadMe

Else

Ifmyexit=4Then

Err.Clear

Resume

Else

Err.Clear

ResumeNext

EndIf

EndIf

EndSub

PrivateSubForm_Unload()

……

cndbase.Close

Setcndbase=Nothing

EndSub

2.建表

codbase.CommandText=“{callCREATABLE(?)}”

codbase.CommandType=adCmdText

codbase.Name=“CREATABLE”

’设定OutPut的参数

Setparam=codbase.CreateParameter(“flag”,adInteger,adParamOutput)

codbase.Parameters.Appendparam

Setcodbase.ActiveConnection=cndbase

codbase.Execute

Ifcodbase.Parameters(0)=0Then

myexit=MsgBox(“建表成功!”,vbOKOnly,“程序提示:”)

Else

myexit=MsgBox(“建表失败!”,vbOKOnly,“错误提示:”)

Endif

……

3.修改

rsdbase.Open“worker”,cndbase,adOpenDynamic,adLockPessimistic,adCmdTable

rsdbase.MoveFirst

cndbase.BeginTrans

’在记录集中进行循环更改

DoUntilrsdbase.EOF

’增加20元职务代码为1的人员的工资

Ifrsdbase!duty=1Then

rsdbase!salary=rsdbase!salary 20

EndIf

rsdbase.MoveNext

Loop

rsdbase.UpdateBatch

……

4.统计

StrSQL=“Selectavg(salary),sum(salary)fromworker”

rsdbase.CursorLocation=adUseClient

rsdbase.OpenStrSQL,cndbase

salaryavg=rsdbase(0)’平均工资

salarysum=rsdbase(1)’工资总和

……

rsdbase.Close

5.存储过程creatable.sql

CREATEPROCEDUREdbo.creatable(@return_valueintegeroutput)

AS

Begin

CreatetableWorkerdb..Worker

(codenchar(4)notnull,

namechar(8)notnull,

yearnchar(4),

monthnchar(2),

daynchar(2),

salarynumeric(18,2),



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:VB环境多媒体压缩数据流播放技术   下一篇:如何在VB中截获shell程序的输出

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号