求救!!请帮忙.存储过程如下:
ALTER PROCEDURE dbo.selectwherelasterday (
@value1 datetime,
@value2 datetime
)ASselect servername,serverip,serviceqq,opentime,linetype,version,website,tuijian
from serverids where endtime>getdate() and (opentime between @value1 and @value2) order by addtime DESC
RETURN
出错提示:一个 SqlParameterCollection 已包含带有 ParameterName“@value1”的 SqlParameter。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 另一个 SqlParameterCollection 已包含带有 ParameterName“@value1”的 SqlParameter。源错误:
行 58:
行 59: foreach(SqlParameter sp in parameters)
行 60: {sqlcmd.Parameters.Add(sp);}
行 61: SqlDataAdapter dapubs=new SqlDataAdapter();
行 62: dapubs.SelectCommand=sqlcmd;
相关方法:
public DataSet returnds(string selectstr,SqlParameter[] parameters)
{
SqlConnection sqlcon=new SqlConnection(sqlconstr);
SqlCommand sqlcmd=new SqlCommand(selectstr,sqlcon);
sqlcmd.CommandType=CommandType.StoredProcedure; foreach(SqlParameter sp in parameters)
{sqlcmd.Parameters.Add(sp);}
SqlDataAdapter dapubs=new SqlDataAdapter();
dapubs.SelectCommand=sqlcmd;
DataSet ds=new DataSet();
dapubs.Fill(ds);
return ds;
}aspx文件代码:public void datagridbind()
{
mymethod methodgetds=new mymethod();
taohuang.DataSource=methodgetds.returnds("selectwheretaohuang").Tables[0].DefaultView;
taohuang.DataBind();
zongheds.DataSource=methodgetds.returnds("selectwhereputong").Tables[0].DefaultView;
zongheds.DataBind();
DateTime dt=new DateTime();
dt=Convert.ToDateTime(DateTime.Now.ToShortDateString()); SqlParameter[] sps={
new SqlParameter("@value1",SqlDbType.DateTime,20),
new SqlParameter("@value2",SqlDbType.DateTime,20)
};
sps[0].Value=dt.ToShortDateString();
sps[1].Value=dt.AddDays(1).ToShortDateString();
today.DataSource=methodgetds.returnds("selectwherelasterday",sps).Tables[0].DefaultView;
today.DataBind();
sps[0].Value=dt.AddDays(-5).ToShortDateString();
dt=Convert.ToDateTime(DateTime.Now);
sps[1].Value=dt.ToShortDateString();
Response.Write(dt.ToString());
lasterday.DataSource=methodgetds.returnds("selectwherelasterday",sps).Tables[0].DefaultView;
lasterday.DataBind();
sps[0].Value=dt.AddDays(1).ToShortDateString();
sps[1].Value=dt.AddDays(4).ToShortDateString();
weilai.DataSource=methodgetds.returnds("selectwherelasterday",sps).Tables[0].DefaultView;
weilai.DataBind();
}怎么回事呢,很怪的问题/.
ALTER PROCEDURE dbo.selectwherelasterday (
@value1 datetime,
@value2 datetime
)ASselect servername,serverip,serviceqq,opentime,linetype,version,website,tuijian
from serverids where endtime>getdate() and (opentime between @value1 and @value2) order by addtime DESC
RETURN
出错提示:一个 SqlParameterCollection 已包含带有 ParameterName“@value1”的 SqlParameter。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 另一个 SqlParameterCollection 已包含带有 ParameterName“@value1”的 SqlParameter。源错误:
行 58:
行 59: foreach(SqlParameter sp in parameters)
行 60: {sqlcmd.Parameters.Add(sp);}
行 61: SqlDataAdapter dapubs=new SqlDataAdapter();
行 62: dapubs.SelectCommand=sqlcmd;
相关方法:
public DataSet returnds(string selectstr,SqlParameter[] parameters)
{
SqlConnection sqlcon=new SqlConnection(sqlconstr);
SqlCommand sqlcmd=new SqlCommand(selectstr,sqlcon);
sqlcmd.CommandType=CommandType.StoredProcedure; foreach(SqlParameter sp in parameters)
{sqlcmd.Parameters.Add(sp);}
SqlDataAdapter dapubs=new SqlDataAdapter();
dapubs.SelectCommand=sqlcmd;
DataSet ds=new DataSet();
dapubs.Fill(ds);
return ds;
}aspx文件代码:public void datagridbind()
{
mymethod methodgetds=new mymethod();
taohuang.DataSource=methodgetds.returnds("selectwheretaohuang").Tables[0].DefaultView;
taohuang.DataBind();
zongheds.DataSource=methodgetds.returnds("selectwhereputong").Tables[0].DefaultView;
zongheds.DataBind();
DateTime dt=new DateTime();
dt=Convert.ToDateTime(DateTime.Now.ToShortDateString()); SqlParameter[] sps={
new SqlParameter("@value1",SqlDbType.DateTime,20),
new SqlParameter("@value2",SqlDbType.DateTime,20)
};
sps[0].Value=dt.ToShortDateString();
sps[1].Value=dt.AddDays(1).ToShortDateString();
today.DataSource=methodgetds.returnds("selectwherelasterday",sps).Tables[0].DefaultView;
today.DataBind();
sps[0].Value=dt.AddDays(-5).ToShortDateString();
dt=Convert.ToDateTime(DateTime.Now);
sps[1].Value=dt.ToShortDateString();
Response.Write(dt.ToString());
lasterday.DataSource=methodgetds.returnds("selectwherelasterday",sps).Tables[0].DefaultView;
lasterday.DataBind();
sps[0].Value=dt.AddDays(1).ToShortDateString();
sps[1].Value=dt.AddDays(4).ToShortDateString();
weilai.DataSource=methodgetds.returnds("selectwherelasterday",sps).Tables[0].DefaultView;
weilai.DataBind();
}怎么回事呢,很怪的问题/.
CREATE PROCEDURE
不是
ALTER PROCEDURE
sqlcmd.Parameters.Add(sp);改成if (!(sqlcmd.Parameters.Contains("@value1") || sqlcmd.Parameters.Contains("@value2")))
{
sqlcmd.Parameters.Add(sp);
}
{
SqlConnection sqlcon=new SqlConnection(sqlconstr);
SqlCommand sqlcmd=new SqlCommand(selectstr,sqlcon);
sqlcmd.CommandType=CommandType.StoredProcedure;
sqlcmd.Parameters.Clear(); foreach(SqlParameter sp in parameters)
{sqlcmd.Parameters.Add(sp);}
SqlDataAdapter dapubs=new SqlDataAdapter();
dapubs.SelectCommand=sqlcmd;
DataSet ds=new DataSet();
dapubs.Fill(ds);
return ds;
}是这样吧?我ADD前CLEAR了还是不行的啊.
只是参数不同.高手帮忙啊,急!!!
public DataSet returnds(string selectstr,SqlParameter[] parameters)
中操作完后,释放一下资源,把command以及dataadapter都释放了,看是否可以。
{
if(!sqlcmd.Parameters.Contains(sp.ParameterName))//添加前判断一下就行了
{
sqlcmd.Parameters.Add(sp);
}
}