正文

VB6.0 调用存储过程的例子(方法二)2005-06-26 13:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/leafage/2126.html

分享到:

VB6.0 调用存储过程的例子(方法二)
类型:转载

                    VB6.0 调用存储过程的例子(方法二)


     本人推荐使用方法一来取存储过程,当然前提是知道将要使用的参数化命令的详细情况,通过在代码中创建参数,其执行的速度快。



如果不知道要使用的参数化命令,本人整理了一份通过使用参数(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

阅读(3250) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册