王朝网络
分享
 
 
 

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

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有