回 帖 发 新 帖 刷新版面

主题:parameters集合往里面追加对象怎么覆盖原对象呢.

parameters集合是一个参数集合:
比如存储过程有三个参数:@name_1,@name_2,@name_3.
那么parmeters就是由 @RETURN_VALUE @name_1 @name_2 @namw_3组成.
现在我们用createparameter创建一个对象,并用append把该对象追加到parmeters集合中去
objcomm.parameters.append objcomm.createparameter("@name_4",202,1,4,"你好")

然后在遍历一遍集合:
for ii=0 to objcomm.parameters.count-1  '遍历出所有参数名name和值
response.write objcomm.parameters(ii).name&"<BR>"
next
可是就只得到@name_4,而前面几个@name_1 @name_2 都没有了.
这是怎么回事啊.append不是追加对象到集合里面去吗?怎么会覆盖前面所有的集合对象呢。

回复列表 (共4个回复)

沙发

写过存储过程的朋友解释下啊。

板凳

难道就没人指点下迷津吗>?

3 楼

objcomm.parameters.append objcomm.createparameter("@name_4",202,1,4,"你好")
里objcomm.createparameter("@name_4",202,1,4,"你好")一句表示重新创建了paremeter对象 所以你取到的是个新的对象:
我不太知道vbscript里怎么用这个存储过程:
不过我在asp.net里用C#语句是这样:
objcomm.parameters.Add("@name_4",202,1,4,"你好")

4 楼

不管用在那里,原理都差不多.
createparameter是创建一个新对象,但是这对象是要加到parameters里面,所以不因该覆盖里面原集合里面的对象.

所以我用value属性来添加对象的值.一样可以用

objcomm.parameters(0).value=objcomm.createparameter("@name_4",202,1,4,"你好")  
这样就不会覆盖原有集合里面的对象拉,
不知道原理如何.

我来回复

您尚未登录,请登录后再回复。点此登录或注册