admin 管理员组

文章数量: 1087135


2024年3月19日发(作者:web应用开发论文)

2010年第2期 福建电脑 183 

SQL SERVER数据库与VB对接方法研究 

林长青 

(吉林交通职业技术学院吉林长春130012) 

【摘要】:本文论述了SQL Server数据库如何与高级语言VB的连接的具体方法。 

【关键词】:SQL SERVER数据库,VB,Microsoft ActiveX Data Objects(ADO,也称为ActiveX数据对象控件),存储过程 

目前.数据库管理系统是所有信息系统的支柱。SQL Server 

&”:Data Source=”&数据库服务器名 

作为面向中小型企业的网络数据库系统.提供了与众多高级数 

据库管理器相同的运行性能.而它的界面操作更简单.语句更简 

洁,更加易学。其中对接方法是VB应用数据库中数据的关键, 

具体方法可归纳为两种:一种是通过ADO的数据源对表中的数 

据进行直接操作.另一种是通过SQL语句结合Connection对象 

对数据库中的数据进行编辑.以及对表中的数据进行检索和统 

计。 

论述引例:数据库:学生信息.mdb:其中表:学生成绩:字 

段:学号、课程名、成绩: 

使用ADO访问数据库的方法 

ADO2.0存在于VB的两个独立的库ADODB和ADOR之 

中 ADODB在Referenoes对话框中的名字是Microsoft ActiveX 

Data Objects 2.0 Librarv.包含了所有的ADO对象:ADOR在 

References对话框中名字是Microsoft Activex Data Objects 

Recordset 2.1 Library.只包含对Recordsets的支持。首先在工程 

部件中选择Microsoft ADO Data Control 6.0.然后在窗体中添加 

ADO控件 使用Recordset对象的方法时在VB中加入如下代 

码: 

Dim myConnectstr as strng 

Dim myRecordset as New ADODB.recordset 

myConnectstr=”PROVIDER=SQLOLEDB.1;DataSource=学 

生信息.mdb;Persist Security Info=False” 

myRecordset.CoursorLocation=AduseClient 

myRecordset.Open”select from学生成绩 

adOpenKeyset,adLockPessimistic 

这样对数据库表追加纪录的方法是 

myRecordset.AddNew 

myRecordset.Fields(”学号”、=”20090101” 

myRecordset.Fields(”课程名”、=”数学” 

myRecordset.Fields(”成绩”1=88 

myRecordset.Update 

获取表中的纪录的方法是:recordcnt=myRecordset.Record. 

count 

移动表中的纪录指针的方法是:myRecordset.MoveFirst 

;myRecordset.MoveLast; 

myRecordset.MovePrevious ;myRecordset.MoveNext 

删除表中的当前纪录的方法是:myRecordset.Delete 

关闭纪录集。释放纪录集变量的方法是:myRecordset.Close 

;Set myRecordset=Nothing 

二.使用SQL访问数据库的方法 

使用ADO访问数据库的方法.只适合于对单个表的简单操 

作。如果是对表的数据作复杂查询,或数据统计时我们用SQL 

语言中的数据库操作语句或存储过程结合Connec on对象实现 

首先介绍使用复杂SQL Server数据库操作语句的方法: 

Dim myConnectstr as stnig 

Dim myCnt as New ADODB.connection 

myConnectstr=”Provider=SQLOLEDB.1;Persist Security In一 

fo=False:User ID=”&用户名&”;Initial Catlaog=”&数据库名

myCnt.Open myConnectstr 

exeStr=”数据库表操作的SQL命令.如SELECT.INSERT 

等” 

myCnt.Execute exeStr 

其次我们看一下VB应用程序利用ADO的对象和集合实 

现对SQL Senler数据库存储过程的调用:假设有一个名为 

111yprocdure的存储过程.该存储过程有一个输入参数.一个输出 

参数 

11直接传递参数调』_fj存储过程 

其代码如下: 

Dim strS As String 

Dim adoconn As New AD0DB.Connection 

Din1 adocon1n1 As Ne、v ADODB.Command 

Dim ReturnValue As Integer 

adoconn.C0nnectionS ng=Adodc 1.C0nnectionS ng 

adoconn.Open 

Set adocomm.AcLiveConnecLi0n=adoconn 

adocomm.CommandText=”myprocdure” 

adocomm.CommandType=adCmdStoredProc 

adocomm.Parameters(1 1=”1” 

adocomm.Parameters(2、=”OutputParameters” 

adocomm.Execute 

ReturnValue:adocomm.Parameters(01 

strS=adocomm.Parameters(21 

21追加参数法调用存储过程 

其代码如下: 

Dim myRst As ADODB.Recordset 

Dim myprm As AD0DB.Parameter 

adoconn.C0nnecti0nString=Adodc 1.ConnectionString 

adoconn.Open 

Set adocomm.ActiveConnecti0n=adoconn 

adocomm.CommandText=。’myproedure” 

adocomm.CommandType=adCmdStoredProc 

Set myprm= adocomm.CreateParameter(”parameterl”, 

adTinylnt,adParamInput,,”1”) 

adocomm.Parameters.Append prm 

Set myprm=adocomm.CreateParameter(”parameter2”。adlnte- 

ger,adParamOutpu0 

adocomm.Parameters.Append myprm 

Set myRst=adocomm.Execute 

ReturnValue=adoeomm.Parameters(01 

VB与SQL eSrver数据库数据传递的方法也适用于其它的 

高级语言,只要我们熟练掌握了常用的方法,可以使我们更好地 

发挥SQL Server数据库的作用.充分利用现有的高级程序设计 

语言应用数据库.提高我们的处理应用数据库问题的效率。 

参考文献: 

l,Microsof ̄SQL Server 2000系统管理【美】微软公司著高丽媛译 

(下转第178页) 

178 

pthread

mutex

_

建电脑 

…:/,其他公共成员函数 

2010年第2期 

unloek(mutex); 

if(isZero){ 

delete ptr;ptr=O;delete ref;ref=O;, 

delete mutex;mutex--O; 

J: 

3、结语 

l 

} 

ptr=O;ref=O;mutex-=0; 

J 

… 

其他私有成员函数和变量・, 

public: 

template<class T2>SmartPtr&dynamicCast(eonst SmartPtr d[2>&x1 

if(ptr==x.getPtr0)retum this; 

deeRef0; 

if0"*p=dynamie_east<T >(x.getPtr0))f 

ref=x.getRef0;mutex=x.getMutex0; 

ptr=p;ineRef0; 

J 

retum this; 

智能指针有很多类型,各有其适用范N[3,41。SmanPtr的设 

计目标在于设计一个能适用于大多数编程场合.而不是所有场 

合的智能指针。因此。SmartP ̄保证足够简单高效,但不提供显式 

所有权转移『41等的解决方案。另外,虽然智能指针是一种很好的 

编写安全高效C++代码的工具.这并不意味着使用智能指针就 

绝对不会出现内存问题。SmartPtr在多数情况下是安全的.但象 

其他多数智能指针一样.SmartPtr也不允许从一个原始指针直接 

构造多个智能指针.否则会出现悬空指针.造成内存访问异常 

程序员应根据自己需要选择恰当的智能指针.并在程序设计中 

合理地使用它们。 

参考文献: 

1.ISO/IEC 14882:1998(E),Programming Language—C++【s】New York: 

American National Standards Institute,1998 

2.Andrei A1exandrescu.Modem C++Design:Generic Prog'rammmg and 

】 

template<clssa >SmartPtr&operator-=(eonst SmartPtr<1 >&x)l 

/聿将派生类T2的智能指针赋值给基类T的智能指针 , 

if(ptr==x.getPtr0)return this; 

deeRef0;plr=x.getPlr0; 

ref=x.getRef0;rnutex=x.getMutex0; 

ineRef0; retum this; 

J 

SmartPtr&operator=(eonst SmartPtr&x)l 

与上个函数代码相同.用于同类智能指针赋值 , 

… 

Design Patterns Applied[M].New Y ork:Addison~Wesley.2001 

3.Herb Sutter.The New C++:Smart(er)Pointers[EB/OL].f2010一O1—1 oJ. 

http://www.ddj.com/cpp/184403837≠≠4 

4.Yonat Sharon.Smart Pointers—What,Whv,Which?fEB/oL].f2010-01一 

l O].http://ootips.org/yonat/4dev/smart—pointers.htrrd 

l 

・、-

+一-——+一“—+一一-4--”-4--一—-+一”+一+一+ --4--+"・・+-十一+”-'4"--+一-4---4--一+ +一-4-一+・・+--4-一+・・+ +.-4-一+一-4----4--—+一・・+-+ +一+一-4--+一+-+-+”+-+-+一+-+-+・ 

(上接第183页) 

2、Microsoft VISUAL BASIC.NET程序设计【美】Michael Halvorson著

李宏益译 

3、英文名字:the method of how to link SQL database with VB 

4、英文摘要:The paper deals with the concrete method by which 

SQL Server database is tO be joined with high language vB 

through ADO. 

+一— -+-+一+-+ 

‘-

+一一。。●一一+一・-卜一+-+一—・-卜-‘-+一-+-—・■一一+-+・ 

(上接第202页) 

}br x=1 TotSBmphffo.browidth 

高,用户基本上感觉不到图像处理前后的时间差别,但此方法也 

xe=(x一1) BytesPixel+1 

h=sBits(xe,y) 

g=sBits(xe+1,y) 

r=sBits(xe+2,y) 

有不足,即代码比较复杂。此外,代码在VB开发环境中执行效 

率较低,而生成EXE文件后执行效率明显提高。 

表1三种处理方法执行效率比较表 

选用方法 

vB环境运行 

PSot方法 

SetPixel方法 

SetBittw pBits 

a=sBits(xe+3,y) 

gray=0.299 r+0.587 g+0.114 b 

执行时间(ms) 

编译成EXE文件运行 

478312 

l172 

30 

dBits(xe, ) gray 

dBits(xe+1,y)=gray 

dBits(xe+2,y)=gray 

Next x 

Next y 

79703l 

1391 

l09 

从本文分析中不难看出,PSet方法虽然使用方便,但实际开 

发图像处理程序时,因其执行效率太差,基本上不能使用。Set. 

5.三种处理图像方法的比较 

Pixel方法在保留PSet方法易用性的基础上,提高了执行效率, 

三种方法的灰度转换效果都非常满意.但三种方法在执行 

可用于对处理速度要求不高的图像处理。SetBitmapBits方法的 

效率上存在着较大的差别.表1说明了三种方法在处理同一幅 

执行效果和执行效率都是最优秀的,在实际开发中,作为首选处 

400*300图片时的效率(机器主要配置为CPU 2.4C,内存1G,操 

理方法。 

作系统为Windows 2003)。通过表l可以看出,PSet方法虽然使 

用方便,但处理速度极慢,已经达到了无法忍受地步。SetPixel方 

参考文献: 

法在使用PSet方法相同策略的基础上.很大程度上改善了PSet 

1.冈萨雷斯.数字图像处理(第 ̄-ggt)[M],北京:电子工业出版社。2007. 

处理图像的速度.可作为一般图像处理程序的选用方法.但随着 

2.申石磊,张东生.Visual Basic程序设计fMJ,北京:科学技术出版社, 

图像尺寸的增大.用户感觉到的处理停顿感就越强。SetBitmap. 

2oo7. 

Bits方法由于选用更为先进的处理策略.处理速度得到极大提 

3.龚沛曾.VisualBasic程序设计[M】,北京:高等教育出版社,2007. 

Call SetBitmapBits(hDestBmp。tDBmplnfo.bmWidthBytes 

bmHeight,dBits(1,1)) 

tDBmplnfo. 


本文标签: 方法 数据库 指针 智能 效率