首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

另一个 SqlParameterCollection 中已包含 SqlParameter,该怎么处理

2012-03-01 
另一个 SqlParameterCollection 中已包含 SqlParameter如标题,附代码如下:publicvoidAddNews(Contentconte

另一个 SqlParameterCollection 中已包含 SqlParameter
如标题,附代码如下:
public   void   AddNews(Content   content)
        {
                SqlParameter[]   parameters   =   new   SqlParameter[7];
                SqlParameter   parameter   =   new   SqlParameter();
                parameter   =   new   SqlParameter();
                parameter.ParameterName   =   "@title ";
                parameter.Value   =   content.Title;
                parameters[0]   =   parameter;

                parameter   =   new   SqlParameter();
                parameter.ParameterName   =   "@content ";
                parameter.Value   =   content.ParticularCont;
                parameters[1]   =   parameter;

                parameter   =   new   SqlParameter();
                parameter.ParameterName   =   "@time ";
                parameter.Value   =   content.PublishTime;
                parameters[2]   =   parameter;

                tool.ExecuteStoreProcedure( "AddNews ",   parameters);
        }

        public   void   ExecuteStoreProcedure(string   spName,   SqlParameter[]   parameters)
        {
                try
                {
                        SqlCommand   cmd   =   new   SqlCommand(spName);
                        cmd.CommandType   =   CommandType.StoredProcedure;
                        if   (parameters   !=   null)
                        for   (int   i   =   0;   i   <   parameters.Length;   i++)
                        {
                                cmd.Parameters.Add(parameters[i]);
                        }
                        cmd.Connection   =   this.sqlCon;
                        if   (this.sqlCon.State   ==   ConnectionState.Closed)   this.sqlCon.Open();
                        cmd.ExecuteNonQuery();
                        this.sqlCon.Close();


                }
                catch   (Exception   ee)
                {
                        if   (this.sqlCon.State   ==   ConnectionState.Open)                             this.sqlCon.Close();
                        string   errorString   =   "Tool::ExecuteStoreProcedure()   ------>   "   +   ee.Message.ToString();
                        this.ProcessError(errorString);
                }
                finally
                {
                        if   (this.sqlCon.State   ==   ConnectionState.Closed)
                        this.sqlCon.Close();
                }
        }
请大家帮帮忙,谢谢了。

[解决办法]
SqlParameter[] paraList = new SqlParameter[7];

paraList[0] = new SqlParameter( "@userName ", SqlDbType.VarChar, 50);
paraList[0].Value = personModel.UserName;
paraList[1] = new SqlParameter( "@account ", SqlDbType.VarChar, 100);
paraList[1].Value = personModel.Account;
paraList[2] = new SqlParameter( "@pwd ", SqlDbType.VarChar, 100);
paraList[2].Value = personModel.Pwd;
paraList[3] = new SqlParameter( "@unitID ", SqlDbType.VarChar, 20);
paraList[3].Value = personModel.UnitID;
paraList[4] = new SqlParameter( "@email ", SqlDbType.VarChar, 100);
paraList[4].Value = personModel.Email;
paraList[5] = new SqlParameter( "@officeTel ", SqlDbType.VarChar, 20);
paraList[5].Value = personModel.OfficeTel;
paraList[6] = new SqlParameter( "@mobile ", SqlDbType.VarChar, 20);
paraList[6].Value = personModel.Mobile;

return sd.ExecuteNonQuery( "UP_Person_ADD ", paraList);
[解决办法]
for (int i = 0; i < parameters.Length; i++)
{
cmd.Parameters.Add(parameters[i]);
}

问题出在这里,你试试看不先设置好parameters,而在每次add时new一个parameter进去。

[解决办法]
public void AddNews(Content content)
{
SqlParameter[] parameters = new SqlParameter[7];
par[0] = new SqlParameter( "@title ",content.Title);
par[1] = .......

tool.ExecuteStoreProcedure( "AddNews ", parameters);
}

建议看下Sqlhelper.cs

热点排行