![]() ![]() |
|
VB中调用带参数存储过程的实现 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/6/12 20:59:53 文章录入:杜斌 责任编辑:杜斌 | |
|
|
VB做为快速应用开发(RAD)工具越来越得到开发人员的认可和接受。它对许多API(如ODBC API、SOCKET API等等)的封装使得编程变得简单起来。同时,它支持集成开发环境下的可视化、事件驱动、面向对象等编程特点。下面,我们谈谈在VB中调用存储过程的实现方法及其注意事项。 我们知道,VB的数据库编程有许多种方法,比如直接用ODBC API编程,这种方法灵活、高效,程序员可以实现对数据库复杂的控制;也可以用VB中的数据对象,如RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX 数据对象),这种方法实现起来方便、快捷,但灵活性较差一些。由于存储过程在实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDBMS和编程工具做支持。VB中的各类数据对象也提供对存储过程的支持。 我们以ADO为例来说明其实现的步骤 1. 创建、调试存储过程。你可以在数据库中也可以在其他外挂程序的支持下进行存储过程的创建和调试工作。本例中的存储过程代码如下(使用PUBS的MS SQL中的例子库 ): CREATE PROCEDURE myprocedure 2. 在VB中生成一个新的工程,工程有一窗体,一个COMMAND(NAME:COMMAND1) 按钮,一个 MSFlexGrid(NAME:MSFlexGrid1)控件。 4. 创建命令ADO command; 5. 创建参数并设置各个参数的属性; 6. 执行ADO command; 7. 对数据进行处理;MSFlexGrid显示查询到的数据 8. 释放连接,退出程序。 其中代码如下: 在窗体中声明以下变量: 在窗体的LOAD事件中加入如下代码: 在按钮中的代码如下: Set parm_joblvl = New ADODB.Parameter ‘parm_joblvl.Name = "name2" parm_joblvl.Type = adInteger parm_joblvl.Size = 3 parm_joblvl.Direction = adParamInput mycommand.value = 100 mycommand.Parameters.Append parm_joblvl mycommand.ActiveConnection = cnn1 I = 0 Loop ‘这个循环用来填充MSFlexGrid的内容 特殊说明 1. Set recordset = command.Execute( RecordsAffected, Parameters, Options ) command.Execute RecordsAffected, Parameters, Options 这是command的两种用法,一种有返回结果集,一种没有返回结果集。 RecordsAffected:是指用update、delete操作时所影响的结果,对select的查询,其值为-1;这和在Ms SQL Server 中的Query Analyzer中的不一样。Query Analyzer中,select、update、delete的结果显示的是实际查、改、删的记录数。 Options:指明command的类型,有adCmdText、adCmdTable、adCmdStoredProc等等,用户可见MSDN。 2.在参数的类型中,用户可以用varchar来代替integer,系统会帮你自动实施转化; 3.本例中仅为带输入参数的存储过程,如果要有输出参数,根据MSDN的材料,用ADO不行。你可以用RDO数据对象,MSDN中有一个例子,此处不做过多赘述; 4.可以不用ADO COMMAND对象,也可直接调用ADO CONNECTION的execute方法,结果很类似。 |
|
![]() ![]() |