另一个 SqlParameterCollection 中已包含 SqlParameter 问题

francis 2008-06-18 01:34:03

请看下面的代码:
/// <summary>
/// (添加新闻)添加数据
/// </summary>
/// <returns></returns>
public bool AddNewsData_V()
{
StrSql = "Insert Into [WIN_NEWS_ARTICLE_V] ([WIN_ARTICLE_ID],[WIN_ARTICLE_TYPE],[WIN_ARTICLE_IMGS],[WIN_ARTICLE_TITLE],[WIN_ARTICLE_DATE],[WIN_ARTICLE_NAVI],[WIN_ARTICLE_ASCID])Values(@NewsId,@NewsType,@NewsImgs,@NewsTitle,@NewsDate,@NewsNavi,@NewsAsc)";
Newsid = new SqlParameter("@NewsId", SqlDbType.NVarChar, 36);
Newsid.Value = Convert.ToString(newsid);
Newstype = new SqlParameter("@NewsType", SqlDbType.Int);
Newstype.Value = Convert.ToInt32(newstype);
Newsimgs = new SqlParameter("@NewsImgs", SqlDbType.NVarChar, 255);
Newsimgs.Value = Convert.ToString(newsimgs);
Newstitle = new SqlParameter("@NewsTitle", SqlDbType.NVarChar, 255);
Newstitle.Value = Convert.ToString(newstitle);
Newsdate = new SqlParameter("@NewsDate", SqlDbType.DateTime);
Newsdate.Value = Convert.ToDateTime(newsdate);
Newsnavi = new SqlParameter("@NewsNavi", SqlDbType.NVarChar);
Newsnavi.Value = Convert.ToString(newsnavi);
Newsasc = new SqlParameter("@NewsAsc", SqlDbType.Int);
Newsasc.Value = Convert.ToInt32(newsasc);
SqlParameter[] ArryPars ={ Newsid, Newstype, Newsimg, Newstitle, Newsdate, Newsnavi, Newsasc };
return db.ExecuteData(StrSql, ArryPars);
}

public bool AddTags()
{
跟上面差不多.......
SqlParameter[] ArryPars ={ Tagsid, Tagsname };
return db.ExecuteData(StrSql, ArryPars);
}

/// <summary>
/// 运行SQL语句返回True/False
/// </summary>
/// <param name="SQL"></param>
public bool ExecuteData(string StrSql, SqlParameter[] ArryPars)
{
SqlConn = GetConn();
Command = new SqlCommand(StrSql, SqlConn);
if (ArryPars.Length > 0)
{
for (int i = 0; i < ArryPars.Length; i++)
{
Command.Parameters.Add(ArryPars[i]);
}
}
try
{
if (Command.ExecuteNonQuery() > 0)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
Command.Parameters.Clear();
Dispose(SqlConn);
}


调用:

if(AddNewsData_V())
{
if(AddTags())
{
response.write("添加成功");
}
else
{response.write("添加失败");}
response.write("添加成功");
}
else
{
response.write("添加失败");
}


运行的时候 AddNewsData_V()能够成功运行并添加数据,但是接下来AddTags()就不能成功运行并弹出错误
另一个 SqlParameterCollection 中已包含 SqlParameter。

请问怎样修改
...全文
323 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
popule_daisy 2008-06-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 amandag 的回复:]
C# codepublic bool ExecuteData(string StrSql, SqlParameter[] ArryPars)
{
SqlConn = GetConn();
Command = new SqlCommand(StrSql, SqlConn);
if (ArryPars.Length > 0)
{
for (int i = 0; i < ArryPars.Length; i++)
{
Command.Parameters.Add(ArryPars[i]);
}
}
try
{
if (Command.ExecuteNonQuery() > 0)
{

[/Quote]

或者在方法里面添加一个bool 类型的变量 flag
if (Command.ExecuteNonQuery() > 0)
{
//这里如果成功,会直接return ,从而参数无法清除
flag=true;
}
else
{
//同理
flag=false;
}

Command.Parameters.Clear();
Dispose(SqlConn);
return flag;

我经常是这样用!
amandag 2008-06-22
  • 打赏
  • 举报
回复
public bool ExecuteData(string StrSql, SqlParameter[] ArryPars)
{
SqlConn = GetConn();
Command = new SqlCommand(StrSql, SqlConn);
if (ArryPars.Length > 0)
{
for (int i = 0; i < ArryPars.Length; i++)
{
Command.Parameters.Add(ArryPars[i]);
}
}
try
{
if (Command.ExecuteNonQuery() > 0)
{
//这里如果成功,会直接return ,从而参数无法清除
return true;
}
else
{
//同理
return false;
}
}
catch
{
// 同理
return false;
}
finally
{
//加finally块试一下
Command.Parameters.Clear();
Dispose(SqlConn);
}
}
anliuty 2008-06-22
  • 打赏
  • 举报
回复

public bool ExecuteData(string StrSql, SqlParameter[] ArryPars)
{
SqlConn = GetConn();
Command = new SqlCommand(StrSql, SqlConn);
if (ArryPars.Length > 0)
{
for (int i = 0; i < ArryPars.Length; i++)
{
Command.Parameters.Add(ArryPars[i]);
}
}
try
{
if (Command.ExecuteNonQuery() > 0)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
Command.Parameters.Clear();
ArryPars = null;//加上这句试试
Dispose(SqlConn);
}

datahandler2 2008-06-22
  • 打赏
  • 举报
回复
以前遇到过:每次使用一次sqlcommand,必须显示清除该sqlcommand所包含的参数与链接
这就是这个问题的解决方法。

另外本人比较笨,想问楼主一个问题
treturn db.ExecuteData(StrSql, ArryPars);
his.bind();

这个db.[color=#FFF0000]这个是什么用法,能说下吗?还没遇到过这个用法.
谢谢

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧