读书人

怎么利用out参数并通过方法构建SqlP

发布时间: 2012-02-02 23:57:14 作者: rapoo

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

读书人网 >asp.net

热点推荐