ASP Classic中判断参数类型:ADODB.Command或String
刚好在ASP Classic(基于VBScript)里处理过这种多类型参数的判断需求,给你分享两个实用的类型检测函数,完美适配你要判断String和ADODB.Command的场景:
1. 判断String类型的函数 is_string
这个函数会严格检查参数是否为String类型,同时处理Empty和Null这类边界情况,避免直接检测时抛出错误:
Function is_string(ByVal obj) ' 先处理空值或未初始化的情况 If IsEmpty(obj) Or IsNull(obj) Then is_string = False Exit Function End If ' 双重验证确保类型为String is_string = (TypeOf obj Is String) Or (TypeName(obj) = "String") End Function
说明:
IsEmpty和IsNull用来拦截未传入参数或者参数为Null的情况,防止后续TypeOf操作报错- 同时用
TypeOf和TypeName做验证,是为了覆盖VBScript中Variant存储String的不同场景,确保判断准确
2. 判断ADODB.Command对象的函数 is_ADODBCommand
对于ADODB.Command这种COM对象,我们需要先确认它是对象类型,再通过类型名和ProgID双重验证,避免和其他同名组件混淆:
Function is_ADODBCommand(ByVal obj) is_ADODBCommand = False ' 先排除非对象类型的参数 If Not IsObject(obj) Then Exit Function ' 第一步:通过TypeName判断是否为Command类 If TypeName(obj) = "Command" Then ' 第二步:验证ProgID,确保是ADODB组件的Command On Error Resume Next ' 捕获可能的属性不存在错误 Dim objProgID objProgID = obj.ProgID If Err.Number = 0 And objProgID = "ADODB.Command" Then is_ADODBCommand = True End If On Error GoTo 0 ' 恢复错误处理 End If End Function
说明:
IsObject先过滤掉非对象参数,避免后续操作报错- 先检查
TypeName是否为"Command",再验证ProgID为"ADODB.Command",可以避免其他第三方组件中同名的"Command"对象干扰 On Error Resume Next用来处理某些对象可能没有ProgID属性的情况,防止函数崩溃
使用示例
你可以在你的目标函数里这样调用这两个判断函数:
Sub ProcessInput(ByVal inputParam) If is_ADODBCommand(inputParam) Then Response.Write "处理ADODB.Command对象:准备执行数据库操作" ' 这里可以执行Command的逻辑,比如 inputParam.Execute() ElseIf is_string(inputParam) Then Response.Write "处理字符串参数:" & inputParam Else Response.Write "不支持的参数类型,请传入String或ADODB.Command对象" End If End Sub ' 测试调用 ' 测试ADODB.Command Dim dbCmd Set dbCmd = Server.CreateObject("ADODB.Command") ProcessInput(dbCmd) ' 测试字符串 ProcessInput("这是一个测试字符串")
内容的提问来源于stack exchange,提问作者Stephen R
相关产品推荐
相关产品推荐

