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.
版权声明:本文标题:SQL SERVER数据库与VB对接方法研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1710854668a576425.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论