62,046
社区成员
发帖
与我相关
我的任务
分享
请看下面的代码:
/// <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。
请问怎样修改
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);
}
}
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);
}