首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么利用out参数,并通过方法构建SqlParameter数组,难啊

2012-02-02 
如何利用out参数,并通过方法构建SqlParameter数组,难啊!!!!目的很简单:构建一个SqlParameter类型的数组,用

如何利用out参数,并通过方法构建SqlParameter数组,难啊!!!!
目的很简单:
构建一个SqlParameter类型的数组,用于给存储过程传入参数
传统做法:
SqlParameter[]   param   =  
{
//第一个SqlParameter,
//第二个SqlParameter,
//...........
};

为了某种目的,必须将构建SqlParameter数组放入一个方法(函数)中执行,利用out类型参数,如下:

protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
SqlParameter[]   param   =   {   };

string   str   =   buildSQLQuery(a,   out   param,);
}


private   string   buildSQLQuery(string   a,   out   SqlParameter[]   param)
{
                ArrayList   al   =   new   ArrayList();

if(a= " ")
{
al.Add(第一个SqlParameter);
}
else   if(a= "1 ")
{
al.Add(第二个SqlParameter);
}


                for   (int   i   =   0;   i   <   al.Count;   i++)
                {
                        param[i]   =   (SqlParameter)al[i];
                }

return   一个string;
}


执行之后。提示:使用了未赋值的   out   参数“param”


请问大家如何才能正确通过函数给SqlParameter数组赋值

[解决办法]
out的参数必须先赋值 new出来
不想的话 可以用ref

不过本身就是引用类型 不用加 out吧
[解决办法]
你是说开始不知道大小 进去才能按ARRAYLIST得到大小吧
那就用ref呗
[解决办法]
按你的要求,你把Out改成Ref就可以了.
[解决办法]
private string buildSQLQuery(string a, out SqlParameter[] param)
改成
private string buildSQLQuery(string a, out SqlParameter[] param)
{
ArrayList al = new ArrayList();

if(a= " ")
{
al.Add(第一个SqlParameter);
}
else if(a= "1 ")
{
al.Add(第二个SqlParameter);
}

SqlParameter[] tmpParams = new SqlParameter[al.Count];

for (int i = 0; i < al.Count; i++)
{
tmpParams[i] = (SqlParameter)al[i];
}
param = tmpParams;

return 一个string;

}

这样我想应该能行
[解决办法]
out只是把方法里的值传出,而不会像ref一样直倿在方法体内对变量同地址操作,所以你的方法中直接把out改成ref,如下,其它的都不用改了:

private string buildSQLQuery(string a, ref SqlParameter[] param)
{
...
}
[解决办法]
在你的buildSQLQuery方法里的开头添加下面这一行
SqlParameter[] param = new SqlParameter[int型数字];

out的,要先声明。
[解决办法]
ref就行

热点排行