admin 管理员组

文章数量: 1086019


2024年3月19日发(作者:rabbitmq重复消费)

维普资讯

2002年8月 电 脑 学 习 第4期 

在VB中快速访问SQL Server数据库的方法 

杜红 

摘 要 针对SQL Server系统所建立的数据库。分别就DAO、RDO ADO不同机制下的数据源访问列举出采用数 

据绑定控件和适应动态编程的非绑定控件的应用。着重对ADO方法进行了详解。 

关键词 

VB ADO SQL Server 数据源 ODBC 

The Methods of Fast Accessing SQL Server Data Base in Visual Basic 

Du Hong 

Abstract 

Aiming at the database created by SQL Server,and based on such difeentr mechanism as DAO、RDO and ADO。 

he paper prtesents the apphcation about using data binding control and non-data—binding control fit for dynamic 

programming.At last the paper explains it in detail. 

Keyword 

VB Active Data Objctes SQL Server Data Source Open Data Base Connection 

为了简洁说明在VB应用程序中快速访问SQL Server 

的方法,本文以SQL Server系统自带的数据库Pubs为例, 

统一实现以下任务: 

先建立ODBC数据源:(1)在SQL Server 7.0中添加 

个用户;添加一个用户登录名:UserO,口令为:kitty;(2) 

(DSN),设定DSN名称为MyPubs。是对数据库Pubs的连 

接。 

在Windows控制面板下用ODBC建立一个数据源名 

(1)建立SQL Server数据源的连接方式; 

(2)执行SQL语句关于表(Authors)所有记录的查 

询,产生记录集; 

(3)应用VB在表单中设置网格控件对象或一组文本 

1.1使用Data控件的应用程序 

Data控件是一个绑定控制接口,缺省时通过ODBC驱 

框控件对象,把查询结果集的各个不同的记录和域值进行 

输出。 

动管理器和SQL Server驱动把Jet数据库引擎同SQL Serv— 

er连接起来。(如图1。) 

1 SQL Server数据库的快速访问方法 

SQL Server 

图1 SQL Server数据库访问方法和结构图 

Next 

起着举足轻重的作用。我们可以利用microsoft公司提供的 

End If 

End If 

End Sub 

可编程对象,轻松开发出具有语音朗读及词典功能的应用 

软件,有兴趣的读者不妨一试。 

2结束语 

参考文献 

Francesco Balena著.翔实翻译组译.VB6编程技术大全. 

没有组件编程,就没有VB的今天,组件编程在VB中 

北京:机械工业出版社出版,2000.1 

修改稿收到日期:2002-03—12 

・ 

杜红湖北省江汉石油学院电信系副教授(荆州434023)主要从事数据库技术应用研究。 

37 ・ 

维普资讯

(1)对Data控件埘象Daml改变属性: 

Data1.CoNNect: ODBC;UID=User0;PWD=kitty;DATABASE=Pubs 

Data1.DatabaseName=”MyPubs” 

Data1.RecordSoilrce= select from authors” 

(2)显示数据侔Pubs中表Au rs中的所有记录内容 

①选择VB的ProjeclA:omponent/Microsoft Data Bound 

Grid Control 5.0(SP31,添加到控件j二具箱中成为DBGrid控 

件; 

②修改DBGrid控什对象DBGrid1的属性DBGrid1. 

DataSource为datal; 

(3)执行查询,显示结果。 

1.2使用DAO和Jet的应用程序 

Data控件是一个绑定控制接口,缺省时自动通过 

ODBC驱动管理器和SQL Server驱动把Jet数据库引擎同 

SQL Server连接起来。如果不使用Data控件,而是在代码 

中实现数据绑定和创建数据对象,那么对于DAO对象要进 

行人工注册DAO类然后应用软件就可以自如地应用DAO 

的各种函数如:CreateDataBase,OpenRecordset,Cre— 

ateTableDef,CreateQueryDef进行数据库的操作,其结构如 

图1。 

(1)注册Jet Data Access Objects(DAO) 

V ̄roject/Reference/Microsoft DAO 3.60 ̄ect Library: 

(2)在表单中创建数据库各个不同记录域的一组浏览: 

textl(O),textl(1),textI(2),textI(3),以及控制命令按钮控件: 

(3)定义DataBase和Recordset对象,建立对数据源的 

连接 

Dim db As Database 

Dim rs As Recordset 

Set db=OpeDatabase CMyPubs' ,Fales,False,"ODBC;Uid=User0;Pwd= 

kitty;Database=Pubs '; 

(4)执行查询操作并显示记录内容 

Set rs=db.OpenRecordset( select from authorsn,dbOpenSnapshot1 

Text1(0).Text=rs!au_id 

Textl(1).Text=rs!au_lnanle 

Textl(2).Text=rslau fname 

Text1(3).Text:rs!phone 

Textl(4).…1ext=rs!address; 

(5)根据对rs执行move方法操作,可进行不同记录 

内容的显示,若对rs记录集执行不同的SQL语句,则可得 

到满足不 条件的记录集; 

(6)执行查询,显示结果。 

1.3使『}J RemoteData控仆的应用程序 

RemoteData控件同Data控件一样是一个绑定控制接 

口,通过ODBC驱动管理器和SQL Server驱动直接与SQL 

Server相连,而不需Jet引擎。与Data控件比较,它更适合于 

对ODBC数据源的拧制,是专为ODBC数据源而设计,且适 

合于SQL Server,其结构见图1。 

(1)添加控件,选择VB'ProjcetA2omponents'Microsofi 

・ 38 ・ 

RemoteData Control 6.0: 

(2)添加控制类,选择VB ̄ProjecVReferefleesZMicrUsofi 

Remote Data Object 2.01 

(3)设置RemoteData控件对象MSRDC1的属性 

MSRDC 1.Connect=”UlD=UserO;Pwd=kitty;Database=pubs” 

MSRDC 1.DataSom'ceName=”MyPubs 

MSRDC1.sql:”select from authors 

MSRDC1.Refresh: 

(4)修改DBGrid控件的对象DBGrid1的属性 

①选择vB的ProjcelASompoilellt/Microsofi DataBound 

Grid Control 5.0(SP3),添加到控件工具箱中成为DBGrid控 

件; 

②修改DBGrid控件对象DBGridl件的属性DBGrid1. 

Dataseul'ce为MSRDC1: 

(5)显示执行SQL语句后的查询结果。 

1.4使用RDO的应用程序 

RDO(Remote Data Object)是通过ODBC驱动管理器和 

SQL Server驱动直接与SQL Server相连。其结构如图1。 

(1)注册RDO:V ̄zProject.'Eonferences/Microsofi Rc_I 

mote Daat Objcets 2.01 

(2)在表单中创建数据库的浏览控件text1(0),textl(1), 

text1(2),textl(3),控制命令按钮控件; 

(3)定义rdoConnection,rdoResuhset对象,建立对数据 

源的连接 

Dim db As New rdoConnection 

Dim rs As rdoResuhset 

Dim ps As rdoQuery 

db.Connect=”DSN=MyPubs;uid=UserO;pwd=kitty;” 

db.EstablishConnection: 

(4)执行查询操作并显示记录内容 

eSt ps=db.CreateQuery(”simple”.”select from authors") 

eSt rs=ps.OpenResultset(rdOpenStatic) 

Text1(0).Text=rs!au—id 

Textl(1).Text=rs ̄au_lilanle 

Text1(2).Text:rs!au_fname 

Text1(3).Text:rs!phone 

Text1(4).Text:rs!address 

(5)根据对MS,执行move方法操作,可进行不问记录 

内容的显示,若对rs记录集执行不同的SQL语句,则可得 

到满足不同条件的记录集。 

(6)执行查询,显示结果。 

2 ADO访问SQL Server的快速方法 

ADO(ActiveX Data Objects),是Microsoft的最新编程 

接口,它包括DAO,RDO和VBSQL的所有功能,并成为取代 

前面介绍的在VB中快速访问SQL Server数据库的统一的 

编程接口。 

2.1使用ADO Data绑定控件的应用程序 

维普资讯

ADO Data控件同Data控件一样是一个绑定控制接 

口,通过OLE DB驱动管理器和SQL Server驱动直接与 

SQL Server相连。ADO和OLE DB是Microsoft推出的一致 

数据访问接口,如图1。 

(1)添加控件,选择VB/ProjeclA ̄omponents/Micmsofi 

ADO Data Control 6.0(OLEDB1; 

(2)添加一个与ADO兼容的数据网格控件,选择VII/ 

ProjecVEomponenetsZMicmsofi DataGrid Control 6.O(OLE DB1 

方法一: 

Adedc 1.ConnectionStirng ”DSN=MyPubs;Uid=UserO;Pwd=kitty 

Adedc 1.CommandType:adCmdTable 

Adedc1.RecordSource=”authors : 

方法二: 

Adedc 1.ConnectionString ”DSN=MyPubs;Uid=User0;Pwd=kitty 

Adedc 1.CommandType=adCmdText 

Adedc 1.RecordSource=”Select}from authors ; 

(3)设定数据控件DataGrid对象DataGfid1的属性; 

DamGdd1.DataSource为adodc1; 

(4)执行查询,显示结果。 

2.2应用ADO非绑定控件的应用程序 

在应用程序的开发过程中,往往需要动态与数据源的 

连接,或者脱离于界面操作的数据源操作,就产生了在程序 

的执行过程中进行查询,修改等其它功能的需求。 

(1)添加控件,选择V ̄rojectA ̄omponents,Microsoft 

ADO Data Control 6.0(OLEDB1; 

(2)在程序中声明三类对象 

dim an As New ADODB.Connection 

dim cmd As New ADODB.Command 

dim 1"8 As New ADODB.Recordset: 

(3)连接数据源 

an.ConnectionString DSN=MyPubs;Uid=User0;Pwd=kitty 

an.Open; 

(4)执行一个基本的查询命令,生成一个记录集 

cmd.CommandType=adCmdText 

cmd.ActiveConnection=all 

cmd.CommandText=”select from authors” 

eSt rs=cmd.Execute: 

(5)将记录集合的第一个记录的内容在非绑定控件上 

显示 

Text 1(O).Text=rs!au—id 

Textl r1).Text=rs!au_lname 

Text 1(2).Text=rs!au_fname 

Text 1(3).Text=rs!phone 

Text 1(4).Text=rs!address; 

(6)可通过对rs的Move方法(如:MoveFirst,Move.- 

Last,MovePrev,MoveNext)执行,实现记录移动,可得到对 

不同记录的操作; 

(7)执行查询,显示结果。 

3非绑定控件显示数据库不同记录的控制方法 

在SQL Server数据库的访问过程中,对任一表中内容 

的显示,可采用绑定控件或非绑定控件。绑定控件的内容随 

记录的游标导航而动态变化;而非绑定控件在对表中的不 

同记录显示时要自我设置导航控制——记录移动控制,针 

对前面阐述的三种非绑定控件应用数据库中的两个查询移 

动命令按钮,完成前一个记录,后一个记录的查询,可参考 

以下代码。 

3.1下一个记录内容显示 

Private Sub cmdNextReco

_

Click() 

移动显示后一个记录的内容 

r8.MoveNe】(t 

If Not 1"8.EOF()Then 

Text 1(O).Text=rslau—id 

Text1(1).Text=rs!au_lname 

Text1(2).Text=rs!au_fname 

Text l(3).Text=rs!phone 

Textl(4).Text=rs!address 

End If 

cmdNextReco.Enabled=Not rs.E0F 

End Sub 

3.2上一个记录内容显示 

Private Sub cmdPrevReco

_

Click() 

移动显示前一个记录的内容 

1"8.MovePrevious 

fI Not rs.BOF0 Then 

Text 1(O).Text=rsiau—id 

Text1(1).Text=rs!au_lname 

Text 1(2).Text:rs!au_fname 

Textl(3).Text=rs!phone 

Textl(4).Text=rs!address 

End If 

cmdPrevRee0.Enablde=Not rs.BOF 

End Sub 

参考文献 

1网络数据库实现SQL Server 6.0.Microsoft著.科学出版 

社,1997.3 

2 D.Solomon.R.Rankins著.Microsoft SQL Server 6.5开发 

指南.北京:清华大学出版社,1998.4 

3刘炳文著.Visual Basic程序设计一一数据库篇.北京: 

人民邮电出版社,1999.6 

・39・ 


本文标签: 控件 绑定 记录 数据库 显示