本帖最后由 hyefeifei 于 2015-10-7 09:16 编辑
3. 继续讲command对象 a Command有个参数对象(Parameter) b利用 “创建参数” 方法(CreateParameter)即可创建该参数对象 c 但是,必须把“参数对象”(Parameter)放入 “参数集合”(Parameters)中,参数才可以被引用 d 如何把“参数对象”放入“参数集合”中呢?答案是用参数集合的 “追加” 方法(append) e 把参数加入集合后,我们就可以用Parameters(0), Parameters(1)等,来引用参数了 a,b,c,d 四个步骤可用下面一个语句完成: cmd.Parameters.append cmd.createparameter(,Type, Direction, Size) 下面我们看具体应用: - P1=2000
- P2=5000
- strSQL=”select * from student where stu_sal between ? and ?”
- Set cmd = CreateObject("adodb.command")
- With cmd
- .activeconnection = conn
- .Parameters.append .createparameter(, adVarChar, adParamInput, 10) ‘创建第一个参数并加入参数集合
- .Parameters.append .createparameter(, adVarChar, adParamInput, 10) ‘创建第二个参数并加入参数集合
- .Parameters(0) = p1 ‘把参数集合中的第1个参数赋值2000,对应strSQL第1个问号
- .Parameters(1) = p2 ‘把参数集合中的第2个参数赋值5000,对应strSQL第2个问号
- .CommandType = adCmdText
- .CommandText = strSQL
- .Execute
- End With
- rst.Open cmd, , adOpenStatic, adLockBatchOptimistic, adCmdText
复制代码说明:下面讲一下唯一需要讲的语句:createparameter(,Type, Direction, Size) 创建参数方法(createparameter)有五个参数,只需用示例中的三个即可,所以只讲这三个参数 Type:设置参数的数据类型,接受DataTypeEnum 中的值。 Direction:设置这个参数是输入参数还是输出参数,省略或设为1,即为输入参数,2为输出参数,注意上面的语句用的不是1,而是常量adparamInput这个常量,这个常量接受ParameterDirectionEnum中的某个值。 Size:有的参数象日期参数,数值参数没长度,可省略,有的参数如字符串参数有长度,此参数指定最大长度。
注意 ado所有参数都是长整型(Long),你可以把createparameter(, adVarChar, adParamInput, 10)写成:createparameter(, 200,1, 10),但把参数全部写为常量,是个很好的习惯,那么上面所说的DataTypeEnum,ParameterDirectionEnum上哪里找呢?答案是见附件。 另外,我的习惯是全部后期引用,后期引用的问题在于,不能引用ado的内置常量,解决办法是建一个模块,在里面声明所有常量,或者你喜欢,也可以只声明用得着的常量,各位下载附件后,把声明复制到模块中即可。 补充: 上面.Parameters(0) = p1 .Parameters(1) = p2,两个参数的值都是整数 而我们创建参数的语句: .Parameters.append .createparameter(, adVarChar, adParamInput, 10) adVarChar 指明的是字符串,且最长为10 这是可以的,但我们当然可以把参数类型设为整型,整型没有长度一说,所以第三个参数可省略。 我们可用下面语句取代前面创建参数的语句: .Parameters.append .createparameter(, adInteger, adParamInput) 先到这里,已经讲了三种实现参数化查询的方式,你认为该用哪种呢?
|