VB实现SQL Server 2000存储过程调用       幸运好时机,注册赢手机       2005 三星yepp夏季数码旅游风 [文章信息] 作者: 刘兴权 陈奇 吴兵 刘雪松 时洪飞 时间: 2005-05-19 出处: 计算机与信息技术 责任编辑: 方舟 [文章导读] 本文以SQL Server2000存储过程为例,探讨了存储过程的优点,并以Visual Basic6.0程序设计语言给出了调用存储过程的关键代码 ·国内最大中文桌面壁纸站:天极桌面 ·软件专题教程宝典 软件的知识宝库 ·国内最大游戏 动漫 COSPLAY图片站 ·天极博客 动手构建自己的网上家园 ·天极网摘 看大家为你精选出来的东西 ·天极资料世界 您想找的我们都已备好 -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- advertisement · 有奖调查赢取索爱K750c手机 · 阅读习惯有奖调查 · 信利mp3,最低299元 · Excel服务器学习下载 · SAP顶级创新技术论坛,注册即可免费参与 · UC语聊同城有约 · 免费影视剧、网络电视 · 打印监控软件免费下载 · TM2005办公沟通更轻松 “90天”征服女人! 性感女鞋挡不住的诱惑 电脑一台变五台,神奇 让性福为你赚钱! 淘金情趣餐具赚'丰'了 投资万元,月利十五万 市话,长话全免费 搜衣廊,专赚女人钱! 油价上涨,车价狂跌 虫虫新女装漂亮才被抢 阅读习惯有奖调查5.6位生日号.情侣号QQ随您拍免费注册,易趣是您的购物天堂 热点推荐 · 图文详解:黑客入侵方式演示 · Java异常处理的陋习展播 · 多媒体系列教程:网页设计制作 · Powerpoint动画演示教程连载 · 光盘刻录手册:禁忌与技巧(下) [正文]   摘要:本文以SQL Server2000存储过程为例,探讨了存储过程的优点,并以Visual Basic6.0程序设计语言给出了调用存储过程的关键代码。   关键字:数据库;SQL Server2000;存储过程;应用程序;VB     存储过程   存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。它类似于DOS系统中的BAT文件。在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行。同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程的形式,通过执行该存储过程就可以完成这项任务。存储过程与BAT文件又有差别,即存储过程已经进行了预编译。   1、创建存储过程的方法   在Transact-SQL语言中,创建存储过程可以使用CREATE PROCEDURE语句,其语法形式如下: CREATE PROC[EDURE] procedure_name[;number] [{@parameter data_type}[VARYING][=default][OUTPUT] ]],…n] [WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}] [FOR REPLICATION] AS sql_statement[…n]   在上面的CREATE PROCEDURE语句中,方括号"[ ]"中的内容是可选的,花括号"{}"中的内容是必须出现的,不能省略,[,…n]表示前面的参数样式,可以重复出现。竖线"|"表示两边的选项可以任选一个。   下面分析该语句中各种选项的含义。   CREATE PROCEDURE是关键字,也可以写成CREATE PROC。   procedure_name是该存储过程的名称,名称可以是任何符合命名规则的标示符。名称后的[;number]参数表示可以定义一系列的存储过程名称,这些存储过程的数量由number指定。   参数名称可以使用@parameter data_type来指定。在Transact-SQL语言中,用户定义的参数名称前面加"@"符号,这些数据类型是Transact-SQL语言允许的各种数据类型,包括系统提供的数据类型和用户定义的数据类型。   当参数类型为cursor时,必须使用关键字VARYING和OUTPUT。VARYING表示结果集可以是一个输出参数,其内容是动态的。该关键字只能在使用游标作为数据类型时使用。关键字OUTPUT表示这是一个输出参数,可以把存储过程执行的结果信息返回应用程序。 default用于指定参数的默认值。   RECOMPILE选项表示重新编译该存储过程。该选项只是在需要的时候才使用,例如经常需要改变数据库模式时。   ENCRYPTION选项用来加密创建存储过程的文本,防止他人查看。   选项FOR REPLICATION主要用于复制过程中。注意,该选项不能和选项RECOMPILE同时使用。   AS是一个关键字,表示其后的内容是存储过程的语句。参数sql-statement[…n]表示在一个存储过程中可以包含多个Transact-SQL语句。   2、存储过程的优点   在频繁访问数据库的系统中,开发者都乐于使用存储过程,这与存储过程的下列优点是分不开的。   ⑴ 存储过程可以与其他应用程序共享应用程序的逻辑,从而确保一致的数据访问和操纵。   ⑵ 存储过程提供了一种安全机制。如果用户被授予执行存储过程权限,那么即使该用户没有访问在执行该存储过程中所参考的表或视图的权限,该用户也可以完全执行该存储过程而不受到影响。因此,可以创建存储过程来完成所有的增加、删除等操作,并且可以通过编程控制上述操作中对信息的访问权限。   ⑶ 存储过程执行速度快,便于提高系统的性能。由于存储过程在第一次执行之后,其执行规划就驻存在过程高速缓冲存储区中,在以后的操作中,只需从过程高速缓冲存储区中调用编译好的二进制形式存储过程来执行。   ⑷ 使用存储过程可以减少网络传输时间。如果有一千条Transact-SQL语句的命令,一条一条地通过网络在客户机和服务器之间传送,那么这种传输所耗费的时间将很长。但是,如果把这一千条Transact-SQL语句的命令写成一条较为复杂的存储过程命令,这时在客户机和服务器之间网络传输所需的时间就会大大减少。   SQL Server 2000数据库存储过程的调用   VB作为当今应用极为普遍的数据库客户端开发工具之一,对客户端应用程序调用服务器端存储过程提供了强大的支持。特别是随着VB6.0的推出,VB客户端应用程序可以方便地利用ADO的对象和集合来实现对数据库存储过程的调用。   在笔者编写的科技档案管理系统中,就是采用VB作为开发平台,采用SQL Server2000数据库管理数据,在这个科技档案管理系统中有海量的数据,并且对数据库有频繁的访问,利用存储过程访问数据库节省了执行时间,大大提高了系统的性能。   1、ADO简介   ADO控件(也称为ADO Data控件)与VB固有的Data控件相似。使用ADO Data控件,可以利用Microsoft ActiveX Data Objects(ADO)快速建立数据库绑定控件和数据提供者之间的连接。   ADO Data控件可以实现以下功能:   ·连接一个本地数据库或远程数据库。   ·打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询、存储过程或该数据库中的表的视图的记录集合。   ·将数据字段的数值传递给数据绑定控件,可以在这些控件中显示或更改这些数值。   ·添加新的记录,或根据更改显示在绑定的控件中的数据来更新一个数据库。   2、数据库的连接   数据库的连接可通过ADO控件实现,为此,必须在工程部件中选择Microsoft ADO Data Control 6.0 (OLEDB),然后在窗体中添加ADO控件。利用ADO连接数据库有两种方法,具体如下。   1) 通过ADODC属性页实现连接   在ADODC属性页中选择生成按钮,进入数据链接属性对话框;然后选择该对话框中的连接属性页,选择或输入服务器名称和数据库等重要信息;最后测试连接,连接成功后,按确定按钮,返回到属性页对话框,可获得连接字符串,如下例: Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Science_File;Data Source=Data_Server   其中sa是用户名;Science_File是数据库名;Data_Server是数据库名。   通过下列语句,即可连接到指定的数据库: dim odbcstr as String, adocon As New ADODB.Connection odbcstr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Science_File;Data Source=Data_Server" adocon.Open odbcstr '连接到数据库   2) 直接使用连接语句实现   连接数据库的语句如下: Dim ado as ADODC ado.ConnectionString = "Provider=SQLOLEDB.1;Password=" & User_Pwd & ";Persist Security Info=True;User ID=" & User_Name & ";Initial Catalog=" & Data_Name & ";Data Source=" & 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为例,关键代码如下: Dim strS As String '定义一变量 Dim adoconn As New ADODB.Connection 'Connection 对象代表了打开与数据源的连接。 Dim adocomm As New ADODB.Command 'Command 对象定义了将对数据源执行的指定命令。 Dim ReturnValue As Integer '调用存储过程的返回值 adoconn.ConnectionString = Adodc1.ConnectionString 'Adodc1为窗体中的ADO控件,并已成功连接数据库 adoconn.Open Set adocomm.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对象。具体语法如下: Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)   ·Name 可选,字符串,代表 Parameter 对象名称。  ·Type 可选,长整型值,指定 Parameter 对象数据类型。  ·Direction 可选,长整型值,指定 Parameter 对象类型。  ·Size 可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。  ·Value 可选,变体型,指定 Parameter 对象值。   这种方法与上面一种方法的分别主要在于,追加参数的方法在向存储过程传递参数时,这种方法首先通过CreateParameter方法为存储过程创建参数,然后通过Append方法将创建的参数追加到Parameters集合中去。   仍然以存储过程doc_ProcName的调用为例,关键代码如下: Dim mRst As ADODB.Recordset 'Recordset 对象表示的是来自基本表或命令执行结果的记录全集。 Dim prm As ADODB.Parameter 'Parameter 对象代表参数或与基于参数化查询或存储过程的Command 对象相关联的参数。 adoconn.ConnectionString = Adodc1.ConnectionString adoconn.Open Set adocomm.ActiveConnection = adoconn adocomm.CommandText = "doc_ProcName" adocomm.CommandType = adCmdStoredProc Set prm = adocomm.CreateParameter("parameter1", adTinyInt, adParamInput, , "1") adocomm.Parameters.Append prm Set prm = adocomm.CreateParameter("parameter2", adInteger, adParamOutput) adocomm.Parameters.Append prm Set mRst = adocomm.Execute ReturnValue = adocomm.Parameters(0)   以上代码中未定义的变量以及未注释的语句与前述相同。   结束语   在应用程序中调用服务器端存储过程,不仅能显著提高整个应用的性能,而且能加强对数据库数据的保护。VB为客户端应用程序调用存储过程提供了一组方便而有效的方法。

VB实现SQL Server 2000存储过程调用相关推荐

  1. [ZZ]HOW TO:使用 Visual Studio .NET 将 SQL Server 2000 存储过程添加到 Visual SourceSafe

    概要 本文分步讨论如何使用 Microsoft Visual Studio .NET 中的源代码管理功能将 Microsoft SQL Server 2000 存储过程添加到 Visual Sourc ...

  2. 解决在SQL Server 2000的存储过程不能调试

    本机上: 控制面板->管理工具->服务->MSSQL(默认的ID)->属性->登陆->选一个Windows帐户,填写密码,再重新启动SQL Server 2000就 ...

  3. [转] sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( @UserName nvarchar(20) =null ,@LoginPwd nvarchar(60) ...

  4. 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...

    作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...

  5. 使用SpringBoot+MybatisPlus框架的后端项目调用SQL Server的存储过程时报错

    在使用SpringBoot+MybatisPlus框架的后端项目调用SQL Server的存储过程时报错: Mapper层xml中的代码为: 在命令行调用存储过程时,可以顺利执行,但是在mapper中 ...

  6. 在 Visual Studio .NET 中使用 SQL Server 2000 创建数据库应用程序(1)

    适用于:     Microsoft? SQL Server? 2000     Microsoft Visual Studio? .NET 摘要:如何使用 Visual Studio .NET 工具 ...

  7. [转载] sql server 2000系统表解释

    sql server 2000系统表解释 汇总了几个比较有用的系统表,内容摘自联机帮助 sysobjects --------------- 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过 ...

  8. SQL Server 2000 Service Pack 4 中所修复的 bug 的列表

    有关在 SQL Server 2000 Service Pack 4 已修复的 bug 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 314128  FIX: 一 ...

  9. [翻译] - Inside SQL Server 2000's Memory Management Facilities

    原文地址:Inside SQL Server 2000's Memory Management Facilities     翻译:RicCC Ken Henderson     Microsoft ...

最新文章

  1. 完美脱壳组装PE的一般步骤(Obsidium1.3.6.4 DEMO 主程序)
  2. Spring Boot 2.x多线程--使用@Async开启多线程使用示例
  3. SpringCloud基本模块分配搭建以及负载均衡
  4. Scala消息通信之akka,akka案例
  5. easyui combobox开启搜索自动完成功能
  6. mysql有没有单机版?
  7. java集合提取最小的日期_提取Java集合的元素-Java 8方法
  8. VB禁止使用 Alt-Tab 或 Ctrl-Alt-Del
  9. 宽幅FLASH产品展示代码多图带左右显示按钮 - 图
  10. Mac系统使用idea常用快捷键
  11. OSI七层网络协议归纳
  12. 【教程】如何批量获取图片信息,尺寸、大小、路径、文件名,然后导出表格或者txt的文本,下面教你使用方法
  13. java基础知识面试题(41-95)
  14. 数据抓包(网络爬虫)-正方教务管理系统登录
  15. 图解:什么是 5G?5G 为什么那么屌?
  16. 用python实现BP神经网络预测运动员的跳高成绩
  17. android中setClickable,setEnabled,setFocusable的含义及区别
  18. 小布老师讲座笔记(五)
  19. vscode如何添加本地python解释器、解析器 Interpreter?(Python: Select Interpreter)
  20. 建立您的启动:自定义会议视图

热门文章

  1. 初见ZBRUSH(2)
  2. linggo:非线性规划
  3. mate30安卓还是鸿蒙,华为高管表示,mate30继续采用安卓,不太可能有鸿蒙手机!...
  4. win10 解决 WMI Provider Host 占用CPU过高问题
  5. 简单解决win11预览体验计划空白,升级最新版本Canary频道
  6. camera相关术语解释
  7. Android定位功能开发(3)——地图服务(地图点与经纬度)
  8. 计算机绘图线型标准,计算机绘图图层设置和线型宽度.doc
  9. 一周新论文 | 2020年第10周 | 自然语言处理相关
  10. 修改Issue默认经办人为报告人