文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
文本框中光标位置的获得
用VB导入导出你的IE收藏夹
VB应用程序访问SQL Server方法探讨
VB访问SQL Server数据库技术全揭密
自动上网抓数据的机器人
自己的IE——用VB制作浏览器
VB中如何保存Webbrowser中的整个页面..
在VB中该如何控制其它程序的弹出窗口..
保存webbrowser中的HTML内容
破译动网验证码的简单方法
轻松获取QQ密码
VB.NET获取硬盘序列号的方法
WEBBROWSER 技巧一(收藏)
VB自动登陆网络站点详解(二):Inet..
获取webbrowser控件网页的源码
WebBrowser控件说明
关于用VB做更漂亮的窗体的思考
VB中访问存储过程的几种办法
VB6中改变屏幕的分辨率和刷新频率
VB编写一个能显示百分比的自定义进度..
公农历转换VB类
VB.NET窗口渐淡关闭
使用VB实现邮箱自动注册(二):修改..
VB.NET轻松实现任务栏程序
VB.NET启动外部程序
利用vb实现图片上传
VB实现局域网内的文件传输
VB 一个Function传回多个值
在VB中实现多线程
VB 手机号码编码程序


技术教程 -> VB教程 ->  
VB6.0 调用存储过程的例子(方法二)
来源:转载   人气:852   录入时间:2007-11-8
     本人推荐使用方法一来取存储过程,当然前提是知道将要使用的参数化命令的详细情况,通过在代码中创建参数,其执行的速度快。
   
   
   
   如果不知道要使用的参数化命令,本人整理了一份通过使用参数(Parameters)对象来获取存储过程的记录集的内容,但该执行方式速度没有方法一理想。
   
   
   
   代码整理如下,你可以直接将该代码Copy到Form1窗体中进行调试。
   
   其中函数GetDataType可以修改为自己所需的处理方式,在这里所有的代码都是为了测试方便所有,你也可以改为自己所需的相应处理。
   
   
   
   Sub CreateParms()
   
   Dim ADOCmd As New ADODB.Command
   
   Dim ADOPrm As New ADODB.Parameter
   
   Dim ADOCon As ADODB.Connection
   
   Dim ADORs As ADODB.Recordset
   
   Dim strConnect As String
   
   Dim strFieldName As String
   
   
   
   Dim i As Integer
   
   
   
   strConnect = "driver={SQL Server};server=(local);uid=sa;pwd=;database=pubs"
   
   Set ADOCon = New ADODB.Connection
   
   With ADOCon
   
   .Provider = "MSDASQL"
   
   .CursorLocation = adUseServer ''Must use Server side cursor.
   
   .ConnectionString = strConnect
   
   .Open
   
   End With
   
   
   
   Set ADOCmd.ActiveConnection = ADOCon
   
   With ADOCmd
   
   .CommandType = adCmdStoredProc
   
   .CommandText = "ADOTestRPE"
   
   
   
   .Parameters.Refresh '' 指定ADO实际地与数据源相连
   
   End With
   
   
   
   '' 通过Parameters对象,填充输入参数
   
   For Each ADOPrm In ADOCmd.Parameters
   
   If ADOPrm.Direction = adParamInput Then
   
   
   
   ErrDataType:
   
   On Error Resume Next
   
   ADOPrm.Value = InputBox("存储过程参数名称:" & ADOPrm.Name & vbCrLf & _
   
   "该参数数据类型:" & GetDataType(ADOPrm.Type), "请输入参数值", "")
   
   If Err <> 0 Then
   
   If MsgBox("所输入的参数与该参数数据类型不符,请重新输入!取消将退出存储过程的调用!", vbOKCancel, "警告") = vbCancel Then
   
   Exit Sub
   
   End If
   
   Err.Clear
   
   GoTo ErrDataType
   
   End If
   
   On Error GoTo 0
   
   
   
   End If
   
   Next
   
   
   
   On Error GoTo ErrHandler
   
   Set ADORs = ADOCmd.Execute
   
   
   
   If Not (ADORs Is Nothing) Then
   
   If Not ADORs.EOF Then
   
   Do Until ADORs.EOF
   
   For i = 0 To ADORs.Fields.Count - 1
   
   strFieldName = ADORs.Fields(i).Name
   
   Debug.Print "" & ADORs(strFieldName) & Space(4)
   
   Next
   
   Debug.Print
   
   
   
   ADORs.MoveNext
   
   Loop
   
   End If
   
   End If
   
   
   
   
   
   ErrHandler:
   
   Call ErrHandler(ADOCon)
   
   Resume Next
   
   
   
   Shutdown:
   
   Set ADOCmd = Nothing
   
   Set ADOPrm = Nothing
   
   Set ADORs = Nothing
   
   Set ADOCon = Nothing
   
   End Sub
   
   
   
   Private Sub Command1_Click()
   
   Call CreateParms
   
   End Sub
   
   
   
   Sub ErrHandler(objCon As Object)
   
   Dim ADOErr As ADODB.Error
   
   Dim strError As String
   
   
   
   For Each ADOErr In objCon.Errors
   
   strError = "Error #" & ADOErr.Number & vbCrLf & ADOErr.Description _
   
   & vbCr & _
   
   " (Source: " & ADOErr.Source & ")" & vbCr & _
   
   " (SQL State: " & ADOErr.SQLState & ")" & vbCr & _
   
   " (NativeError: " & ADOErr.NativeError & ")" & vbCr
   
   If ADOErr.HelpFile = "" Then
   
   strError = strError & " No Help file available" & vbCr & vbCr
   
   Else
   
   strError = strError & " (HelpFile: " & ADOErr.HelpFile & ")" _
   
   & vbCr & " (HelpContext: " & ADOErr.HelpContext & ")" & _
   
   vbCr & vbCr
   
   End If
   
   
   
   '' Debug.Print strError
   
   MsgBox strError
   
   Next
   
   
   
   objCon.Errors.Clear
   
   End Sub
   
   
   
   Function GetDataType(ByRef DataType As DataTypeEnum) As String
   
   Select Case DataType
   
   Case DataTypeEnum.adArray
   
   GetDataType = "DataTypeEnum.adArray"
   
   Case DataTypeEnum.adBigInt
   
   GetDataType = "DataTypeEnum.adBigInt"
   
   Case DataTypeEnum.adBinary
   
   GetDataType = "DataTypeEnum.adBinary"
   
   Case DataTypeEnum.adBoolean
   
   GetDataType = "DataTypeEnum.adBoolean"
   
   Case DataTypeEnum.adBSTR
   
   GetDataType = "DataTypeEnum.adBSTR"
   
   Case DataTypeEnum.adChapter
   
   GetDataType = "DataTypeEnum.adChapter"
   
   Case DataTypeEnum.adChar
   
   GetDataType = "DataTypeEnum.adChar"
   
   Case DataTypeEnum.adCurrency
   
   GetDataType = "DataTypeEnum.adCurrency"
   
   Case DataTypeEnum.adDate
   
   GetDataType = "DataTypeEnum.adDate"
   
   Case DataTypeEnum.adDBDate
   
   GetDataType = "DataTypeEnum.adDBDate"
   
   Case DataTypeEnum.adDBTime
   
   GetDataType = "DataTypeEnum.adDBTime"
   
   Case DataTypeEnum.adDBTimeStamp
   
   GetDataType = "DataTypeEnum.adDBTimeStamp"
   
   Case DataTypeEnum.adDecimal
   
   GetDataType = "DataTypeEnum.adDecimal"
   
   Case DataTypeEnum.adDouble
   
   GetDataType = "DataTypeEnum.adDouble"
   
   Case DataTypeEnum.adEmpty
   
   GetDataType = "DataTypeEnum.adEmpty"
   
   Case DataTypeEnum.adError
   
   GetDataType = "DataTypeEnum.adError """
   
   Case DataTypeEnum.adFileTime
   
   GetDataType = "DataTypeEnum.adFileTime """
   
   Case DataTypeEnum.adGUID
   
   GetDataType = "DataTypeEnum.adGUID"
   
   Case DataTypeEnum.adIDispatch
   
   GetDataType = "DataTypeEnum.adIDispatch"
   
   Case DataTypeEnum.adInteger
   
   GetDataType = "DataTypeEnum.adInteger"
   
   Case DataTypeEnum.adIUnknown
   
   GetDataType = "DataTypeEnum.adIUnknown"
   
   Case DataTypeEnum.adLongVarBinary
   
   GetDataType = "DataTypeEnum.adLongVarBinary"
   
   Case DataTypeEnum.adLongVarChar
   
   GetDataType = "DataTypeEnum.adLongVarChar"
   
   Case DataTypeEnum.adLongVarWChar
   
   GetDataType = "DataTypeEnum.adLongVarWChar"
   
   Case DataTypeEnum.adNumeric
   
   GetDataType = "DataTypeEnum.adNumeric"
   
   Case DataTypeEnum.adPropVariant
   
   GetDataType = "DataTypeEnum.adPropVariant"
   
   Case DataTypeEnum.adSingle
   
   GetDataType = "DataTypeEnum.adSingle"
   
   Case DataTypeEnum.adSmallInt
   
   GetDataType = "DataTypeEnum.adSmallInt"
   
   Case DataTypeEnum.adTinyInt
   
   GetDataType = "DataTypeEnum.adTinyInt"
   
   Case DataTypeEnum.adUnsignedBigInt
   
   GetDataType = "DataTypeEnum.adUnsignedBigInt"
   
   Case DataTypeEnum.adUnsignedInt
   
   GetDataType = "DataTypeEnum.adUnsignedInt"
   
   Case DataTypeEnum.adUnsignedSmallInt
   
   GetDataType = "DataTypeEnum.adUnsignedSmallInt"
   
   Case DataTypeEnum.adUnsignedTinyInt
   
   GetDataType = "DataTypeEnum.adUnsignedTinyInt"
   
   Case DataTypeEnum.adUserDefined
   
   GetDataType = "DataTypeEnum.adUserDefined"
   
   Case DataTypeEnum.adVarBinary
   
   GetDataType = "DataTypeEnum.adVarBinary"
   
   Case DataTypeEnum.adVarChar
   
   GetDataType = "DataTypeEnum.adVarChar"
   
   Case DataTypeEnum.adVariant
   
   GetDataType = "DataTypeEnum.adVariant"
   
   Case DataTypeEnum.adVarNumeric
   
   GetDataType = "DataTypeEnum.adVarNumeric"
   
   Case DataTypeEnum.adVarWChar
   
   GetDataType = "DataTypeEnum.adVarWChar"
   
   Case DataTypeEnum.adWChar
   
   GetDataType = "DataTypeEnum.adWChar"
   
   Case Else
   
   GetDataType = "无法获取数据类型"
   
   End Select
   
   End Function
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987