VB实现SQLServer存储过程调用.docx
- 文档编号:29894590
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:20
- 大小:32.26KB
VB实现SQLServer存储过程调用.docx
《VB实现SQLServer存储过程调用.docx》由会员分享,可在线阅读,更多相关《VB实现SQLServer存储过程调用.docx(20页珍藏版)》请在冰豆网上搜索。
VB实现SQLServer存储过程调用
VB实现SQLServer2000存储过程调用
摘要:
本文以SQLServer2000存储过程为例,探讨了存储过程的优点,并以VisualBasic6.0程序设计语言给出了调用存储过程的关键代码。
关键字:
数据库;SQLServer2000;存储过程;应用程序;VB
存储过程
存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。
它类似于DOS系统中的BAT文件。
在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行。
同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程的形式,通过执行该存储过程就可以完成这项任务。
存储过程与BAT文件又有差别,即存储过程已经进行了预编译。
1、创建存储过程的方法
在Transact-SQL语言中,创建存储过程可以使用CREATEPROCEDURE语句,其语法形式如下:
CREATEPROC[EDURE]procedure_name[;number]
[{@parameterdata_type}[VARYING][=default][OUTPUT]
]],…n]
[WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]
ASsql_statement[…n]
在上面的CREATEPROCEDURE语句中,方括号"[]"中的内容是可选的,花括号"{}"中的内容是必须出现的,不能省略,[,…n]表示前面的参数样式,可以重复出现。
竖线"|"表示两边的选项可以任选一个。
下面分析该语句中各种选项的含义。
CREATEPROCEDURE是关键字,也可以写成CREATEPROC。
procedure_name是该存储过程的名称,名称可以是任何符合命名规则的标示符。
名称后的[;number]参数表示可以定义一系列的存储过程名称,这些存储过程的数量由number指定。
参数名称可以使用@parameterdata_type来指定。
在Transact-SQL语言中,用户定义的参数名称前面加"@"符号,这些数据类型是Transact-SQL语言允许的各种数据类型,包括系统提供的数据类型和用户定义的数据类型。
当参数类型为cursor时,必须使用关键字VARYING和OUTPUT。
VARYING表示结果集可以是一个输出参数,其内容是动态的。
该关键字只能在使用游标作为数据类型时使用。
关键字OUTPUT表示这是一个输出参数,可以把存储过程执行的结果信息返回应用程序。
default用于指定参数的默认值。
RECOMPILE选项表示重新编译该存储过程。
该选项只是在需要的时候才使用,例如经常需要改变数据库模式时。
ENCRYPTION选项用来加密创建存储过程的文本,防止他人查看。
选项FORREPLICATION主要用于复制过程中。
注意,该选项不能和选项RECOMPILE同时使用。
AS是一个关键字,表示其后的内容是存储过程的语句。
参数sql-statement[…n]表示在一个存储过程中可以包含多个Transact-SQL语句。
2、存储过程的优点
在频繁访问数据库的系统中,开发者都乐于使用存储过程,这与存储过程的下列优点是分不开的。
⑴存储过程可以与其他应用程序共享应用程序的逻辑,从而确保一致的数据访问和操纵。
⑵存储过程提供了一种安全机制。
如果用户被授予执行存储过程权限,那么即使该用户没有访问在执行该存储过程中所参考的表或视图的权限,该用户也可以完全执行该存储过程而不受到影响。
因此,可以创建存储过程来完成所有的增加、删除等操作,并且可以通过编程控制上述操作中对信息的访问权限。
⑶存储过程执行速度快,便于提高系统的性能。
由于存储过程在第一次执行之后,其执行规划就驻存在过程高速缓冲存储区中,在以后的操作中,只需从过程高速缓冲存储区中调用编译好的二进制形式存储过程来执行。
⑷使用存储过程可以减少网络传输时间。
如果有一千条Transact-SQL语句的命令,一条一条地通过网络在客户机和服务器之间传送,那么这种传输所耗费的时间将很长。
但是,如果把这一千条Transact-SQL语句的命令写成一条较为复杂的存储过程命令,这时在客户机和服务器之间网络传输所需的时间就会大大减少。
SQLServer2000数据库存储过程的调用
VB作为当今应用极为普遍的数据库客户端开发工具之一,对客户端应用程序调用服务器端存储过程提供了强大的支持。
特别是随着VB6.0的推出,VB客户端应用程序可以方便地利用ADO的对象和集合来实现对数据库存储过程的调用。
在笔者编写的科技档案管理系统中,就是采用VB作为开发平台,采用SQLServer2000数据库管理数据,在这个科技档案管理系统中有海量的数据,并且对数据库有频繁的访问,利用存储过程访问数据库节省了执行时间,大大提高了系统的性能。
1、ADO简介
ADO控件(也称为ADOData控件)与VB固有的Data控件相似。
使用ADOData控件,可以利用MicrosoftActiveXDataObjects(ADO)快速建立数据库绑定控件和数据提供者之间的连接。
ADOData控件可以实现以下功能:
·连接一个本地数据库或远程数据库。
·打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询、存储过程或该数据库中的表的视图的记录集合。
·将数据字段的数值传递给数据绑定控件,可以在这些控件中显示或更改这些数值。
·添加新的记录,或根据更改显示在绑定的控件中的数据来更新一个数据库。
2、数据库的连接
数据库的连接可通过ADO控件实现,为此,必须在工程部件中选择MicrosoftADODataControl6.0(OLEDB),然后在窗体中添加ADO控件。
利用ADO连接数据库有两种方法,具体如下。
1)通过ADODC属性页实现连接
在ADODC属性页中选择生成按钮,进入数据链接属性对话框;然后选择该对话框中的连接属性页,选择或输入服务器名称和数据库等重要信息;最后测试连接,连接成功后,按确定按钮,返回到属性页对话框,可获得连接字符串,如下例:
Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Science_File;DataSource=Data_Server
其中sa是用户名;Science_File是数据库名;Data_Server是数据库名。
通过下列语句,即可连接到指定的数据库:
dimodbcstrasString,adoconAsNewADODB.Connection
odbcstr="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Science_File;DataSource=Data_Server"
adocon.Openodbcstr'连接到数据库
2)直接使用连接语句实现
连接数据库的语句如下:
DimadoasADODC
ado.ConnectionString="Provider=SQLOLEDB.1;Password="&User_Pwd&";PersistSecurityInfo=True;UserID="&User_Name&";InitialCatalog="&Data_Name&";DataSource="&server_name
其中User-Pwd是用户密码;User_Name是用户名;Data_Name是数据库名;server_name是服务器名。
连接数据库成功后就可以调用存储过程执行操作。
3、存储过程的调用
假设有一个名为doc_ProcName存储过程,该存储过程有一个输入参数,一个输出参数。
1)直接传递参数调用存储过程
直接传递参数方法主要通过以下几个步骤来实现:
(1)通过ADODB的Connection对象打开与数据源的连接;
(2)通过ActiveConnection指定Command对象当前所属的Connection对象;
(3)通过CommandText属性设置Command对象的源,即要调用的存储过程;
(4)通过CommandType属性确定Command对象的源类型,如果源类型为存储过程CommandType即为adCmdStoredProc;
(5)通过Command对象的Parameters集合向所调用的存储过程传递参数,其中对象Parameters(0)为执行存储过程的返回值,返回值为0则执行存储过程成功;
(6)通过Eexecute方法执行在CommandText属性中指定的存储过程。
以存储过程doc_ProcName为例,关键代码如下:
DimstrSAsString'定义一变量
DimadoconnAsNewADODB.Connection'Connection对象代表了打开与数据源的连接。
DimadocommAsNewADODB.Command'Command对象定义了将对数据源执行的指定命令。
DimReturnValueAsInteger'调用存储过程的返回值
adoconn.ConnectionString=Adodc1.ConnectionString'Adodc1为窗体中的ADO控件,并已成功连接数据库
adoconn.Open
Setadocomm.ActiveConnection=adoconn'指示指定的Command对象当前所属的Connection对象。
adocomm.CommandText="doc_ProcName"'设置Command对象源。
adocomm.CommandType=adCmdStoredProc'通知提供者CommandText属性有什么,它可能包括Command对象的源类型。
设置这个属性优化了该命令的执行。
adocomm.Parameters
(1)="1"
adocomm.Parameters
(2)="OutputParameters"'OutputParameters可以为任意的字符串或数字
adocomm.Execute
ReturnValue=adocomm.Parameters(0)'存储过程的返回值,返回0则成功执行。
strS=adocomm.Parameters
(2)'把存储过程的输出参数的值赋给变量strS
2)追加参数法调用存储过程
追加参数通过CreateParameter方法,用来指定属性创建新的Parameter对象。
具体语法如下:
Setparameter=command.CreateParameter(Name,Type,Direction,Size,Value)
·Name可选,字符串,代表Parameter对象名称。
·Type可选,长整型值,指定Parameter对象数据类型。
·Direction可选,长整型值,指定Parameter对象类型。
·Size可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。
·Value可选,变体型,指定Parameter对象值。
这种方法与上面一种方法的分别主要在于,追加参数的方法在向存储过程传递参数时,这种方法首先通过CreateParameter方法为存储过程创建参数,然后通过Append方法将创建的参数追加到Parameters集合中去。
仍然以存储过程doc_ProcName的调用为例,关键代码如下:
DimmRstAsADODB.Recordset'Recordset对象表示的是来自基本表或命令执行结果的记录全集。
DimprmAsADODB.Parameter'Parameter对象代表参数或与基于参数化查询或存储过程的Command对象相关联的参数。
adoconn.ConnectionString=Adodc1.ConnectionString
adoconn.Open
Setadocomm.ActiveConnection=adoconn
adocomm.CommandText="doc_ProcName"
adocomm.CommandType=adCmdStoredProc
Setprm=adocomm.CreateParameter("parameter1",adTinyInt,adParamInput,,"1")
adocomm.Parameters.Appendprm
Setprm=adocomm.CreateParameter("parameter2",adInteger,adParamOutput)
adocomm.Parameters.Appendprm
SetmRst=adocomm.Execute
ReturnValue=adocomm.Parameters(0)
以上代码中未定义的变量以及未注释的语句与前述相同。
结束语
在应用程序中调用服务器端存储过程,不仅能显著提高整个应用的性能,而且能加强对数据库数据的保护。
VB为客户端应用程序调用存储过程提供了一组方便而有效的方法。
VB实现图像在数据库的存储与显示
摘要本文以VB6与Access97作为开发工具,介绍了图像在数据库中的存储与显示技术。
关键词数据库,数据控件,二进制,图像存储,图像显示,ADODB,Recordset
数据库是数据管理的最新技术,是计算机科学的重要分支,是现代计算机信息系统和计算机应用的基础和核心。
在科学技术高速发展的今天,在信息资源无处不在、无处不用,已成为各部门的重要财富的时候,对于从事程序开发的人员来说显得尤为重要。
如今,对数据库的操作不仅仅满足于对字符和数字的单一操作,图像的存储与显示已显得尤为重要。
下面作者将以VB6.0与Access97作为开发工具,分别介绍两种图像显示与存储的方法。
利用数据控件和数据绑定控件
利用这种方法,不写或写少量代码就可以构造简单的数据库应用程序,这种方法易于被初学者接受。
在举例之前,先把数据绑定功能简要的说明一下,凡是具有DataSource属性的控件都是对数据敏感的,它们都能通过数据控件直接使用数据库里的数据。
比如CheckBoxControl,ComboBoxComtrol,TextBoxComtrol,PictureBoxControl,ImageComtrol…因为这种方式涉及到的知识点比较少,也比较容易理解,不多作说明,现直接介绍编程步骤。
1、从数据库中显示所需要的图片
首先,添加一个Data数据控件,设置它的DatabaseName和RecordSource属性,
strPath=App.Path
IfRight(strPath,1)<>"\"Then
strPath=strPath&"\"
MyData.DatabaseName=strPath&"ExampleDB.mdb"'数据库存地址
MyData.RecordSource="Info"'表名
第二步,添加Image控件用来显示图片,设置它的DataSource和DataField属性。
例如本例中:
Image1.DataSource="MyData"和Image1.DataField="MyPhoto"。
然后设置其它具有数据绑定功能的控件用来显示所要的其它内容,经过这两步的操作,运行程序就可以显示你要的数据了。
2、向数据库中添加需要存储的图片
首先,利用数据控件所具有的AddNew属性,添加一个按钮,双击后添加如下代码MyData.Recordset.AddNew
第二步,为Image控件图片指定图片路径Image1.Picture=LoadPicture("图片路径"),经过这两步的操作,就可以向数据库中添加图片了。
这种方法最简单快捷,要写的代码量很少。
但是这种方法在运行速度和灵活性方面有一定的限制,适合于初学者和一些简单的应用,要想灵活多变的显示图像,下面介绍的方法或许更适应您的要求。
利用编写代码实现图片的存储与显示
这种方法相对于方法一来说,代码量大,但是它操作灵活,能够满足多样形式下的操作,受到更多编程者的青睐。
但是涉及到的知识面相对要多一些,不仅要掌握数据库的操作方法,还要二进制文件的读写作进一步的了解。
关于数据库及二进制文件的基本操作很多参考书上都介绍的比较详细,需要时请查阅即可。
在编程之前把本部分用到的变量说明如下:
DimRSAsNewADODB.Recordset
DimChunk()AsByte
ConstChunkSizeAsInteger=2384
DimDataFileAsInteger,Chunks,FragmentAsInteger
DimMediaTempAsString
DimlngOffset,lngTotalSizeAsLong
DimiAsInteger
1、从数据库中显示所需要的图片
第一步首先打开数据库,看有没有要查找的内容,有则继续执行,没有就退出
RS.Source="select*fromInfoWhereName='"&sparaName&"';"
RS.ActiveConnection="UID=;PWD=;DSN=TestDB;"
RS.Open
IfRS.EOFThenRS.cCose:
ExitSub
第二步,读出长二进制数据即图片数据,把它转换成图片文件,操作过程如下
MediaTemp=strPath&"picturetemp.tmp"
DataFile=1
OpenMediaTempForBinaryAccessWriteAsDataFile
lngTotalSize=RS!
MyPhoto.ActualSize
Chunks=lngTotalSize\ChunkSize
Fragment=lngTotalSizeModChunkSize
ReDimChunk(Fragment)
Chunk()=RS!
MyPhoto.GetChunk(Fragment)
PutDataFile,,Chunk()
Fori=1ToChunks
ReDimChunk(ChunkSize)
Chunk()=RS!
MyPhoto.GetChunk(ChunkSize)
PutDataFile,,Chunk()
Nexti
CloseDataFile
第三步,关闭数据库,这样就可以显示所要的图片了。
RS.Close
IfMediaTemp=""ThenExitSub
Picture1.Picture=LoadPicture(MediaTemp)
IfPicture1.Picture=0ThenExitSubj
2、向数据库中添加需要存储的图片
向数据库添加存储的图片是显示图片逆过程,只要掌握了显示图片的操作,存储图片的操作也就迎刃而解了,下面将操作步骤介绍如下
第一步首先打开数据库,过程如下:
RS.Source="select*fromInfo;"
RS.CursorType=adOpenKeyset
RS.LockType=adLockOptimistic
RS.ActiveConnection="UID=;PWD=;DSN=TestDB;"
RS.Open
第二步,把要存储的图片转换成二进制长文件存入数据库中,操作过程如下
RS.AddNew
DataFile=1
OpenstrPathPictureForBinaryAccessReadAsDataFile
FileLen=LOF(DataFile)'文件中数据长度
IfFileLen=0Then:
CloseDataFile:
RS.Close:
ExitSub
Chunks=FileLen\ChunkSize
Fragment=FileLenModChunkSize
ReDimChunk(Fragment)
GetDataFile,,Chunk()
RS!
MyPhoto.AppendChunkChunk()
ReDimChunk(ChunkSize)
Fori=1ToChunks
GetDataFile,,Chunk()
RS!
MyPhoto.AppendChunkChunk()
Nexti
CloseDataFile
第三步,更新纪录后,关闭数据库,就完成了数据图片到数据库的存储。
RS.Update
RS.Close
SetRS=Nothing
两种方法在使用方面各有所长,读者可以针对自己的情况做出合理的选择。
用VB备份和恢复SQLServer数据库的方法
摘要备份与恢复是数据库管理员维护数据库安全性和完整性的重要操作。
本文分析并介绍用Access备份SQL数据库的方法,很好地达到了数据备份的目的。
同时,就Access数据库的安全接口作了简略讨论,使备份后不致丧失数据安全性。
并提出了改进备份与恢复策略的一些建议。
关键词SQLServer数据库;VisualBasic6.0;数据备份;数据恢复;Access
引言
对于关键应用的数据库系统应根据具体环境和条件制订一个完善可行确保系统安全的备份计划,没有备份的系统是不可靠、危险的,后果将是严重的,破坏性病毒、误操作、自然灾害等等都可能会对数据库系统造成难以估量的破坏。
尤其对一个信息化程度较高的企业来说,最有价值的财产或许就是企业数据库中的数据。
一个系统中最重要的是大量的实时数据,没有备份功能显然是不安全和不完善的。
经过实践摸索出VisualBasic6.0开发的备份程序,能将数据库备份到Access数据库(Access为目前流行的桌面型数据库产品,具有存储操作灵活、便利等优点,并且因它与SQLServer同属微软数据库产品,二者能很好地兼容)中,并对Access数据库进行加密以防数据被非法访问。
该程序还能用Access备份库的数据恢复SQLServer数据库,从而减少因误操作损坏数据内容而造成的损失。
使用该方法,用户不须添加额外设备,只须在原有服务器上运行该备份程序,其界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 实现 SQLServer 存储 过程 调用