VB6 与 SQL存储过程的应用

很多朋友在开发的时候都会与SQL Server打交道,但使用SQL存储过程的却不多。其实好的存储过程可以提供更好的性能,所以我个人的观点是尽量将数据分析、处理的任务交给存储过程完成,而业务上的处理由客户端程序完成。

下面我就把VB6与SQL存储过程应用的一点心得与大家共享。
假如我们有一个这样的存储过程:

CREATE procedure Test
   @InValue varchar(50)
as
 declare @R int
 SET NOCOUNT ON
 
          if @InValue='Y'
             select @R=1
          else
           select @R=0
 return @R
GO

(关于存储过程的建立请大家参见其它文章)。

在VB6中使用存储过程其实很简单,我们需要的东西和普通处理数据时候是一样的。
我们需要一个数据连接Adodb.Connection,一个数据命令Adodb.Command,一个参数对象ADODB.Parameter
如果需要得到返回记录的话就再加一个RecordSet
Dim Conn As New Adodb.Connection
Dim Cmd As New Adodb.Command
Dim Par As ADODB.Parameter
Dim RS As New RecordSet

现在建立连接:
Conn.Open "Provider=MSDASQL;Driver={SQL Server};" & _
                                  "uid=User;pwd=123;database=MyDB;Server=192.168.0.1"

接下来很重要,要设置Command类型为存储过程
Cmd.CommandType=adCmdStoredProc
好了,现在设置Command的数据连接
Set Cmd.ActiveConnection=Conn
以上这些步骤相信了解ADO的朋友都知道,接下来的就是如何执行并取得返回值了。
首先设置数据命令中的参数(注意!存储过程中有几个参数就要定义几个参数,不要多也不要少)
现在设置用于得到存储过程中Return @R  返回值的参数,名字可以随便起
要注意的是adInteger表示参数是Integer类型,adParamReturnValue表示为返回参数。
Set par = Cmd.CreateParameter("RetVal", adInteger, adParamReturnValue)
Cmd.Parameters.Append par
接下来设置存储过程中@InValue 参数,名字可以随便起,但最好用与存储过程中同样的名字
要注意的是adChar表示参数是Char类型,adParamlnput表示为输入参数,20表示长度,"Y"表示参数值。

Set par = Cmd.CreateParameter("InValue",  adChar, adParamInput, 20, "Y")
Cmd.Parameters.Append par

现在参数已经设置完成了,接下来执行SQL吧
Cmd.CommandText = "Test"
Set DS=Cmd.Execute

OK,运行完了,现在看看结果吧
MsgBox Cmd.Parameters("RetVal").Value
最后别忘了关闭连接以及释放资源。
Conn.Close
Set Cmd=Nothing
Set Conn=Nothing
Set DS=Noting

至此我们就完成了一个简单的存储过程的调用,下面补充一点经验
1。返回参数可有可无,根据需要决定,但是如果使用的时候最好放在Command第一位设置。
2。应该按照与存储过程中的参数顺序定义Command参数。
3。如果不希望获得返回值也可以直接在CommandText中写入参数,例如Cmd.CommandText="Test 'Y'"
4。文章里面没写关于OutPut参数返回值得获得,实现方法就是在添加一个Command参数属性为adParamOutput,就可以了,这个给你留个发挥空间,我就不写了:-)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值