如何利用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就行