当前位置: 代码迷 >> C# >> 必须声明标量变量 "@IfConcel"该怎么解决
  详细解决方案

必须声明标量变量 "@IfConcel"该怎么解决

热度:64   发布时间:2016-05-05 03:52:37.0
必须声明标量变量 "@IfConcel"
我找了半天,没有找到我没有声明的变量啊,只能求助了,断点也看不出来哪里有问题。
我的代码如下

StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into YyInfo(");
            strSql.Append("IfConcel,SPID,CgDay,CgTime,PeopNum,UnitName,AddressID,YyName,YyPhoneNum,UserID");
            strSql.Append(") values (");
            strSql.Append("@IfConcel,@SPID,@CgDay,@CgTime,@PeopNum,@UnitName,@AddressID,@YyName,@YyPhoneNum,@UserID");
            strSql.Append(") ");
            strSql.Append(";");
            //strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters = {
            new SqlParameter("@IfConcel", SqlDbType.Int,4) ,            
                        new SqlParameter("@SPID", SqlDbType.Int,4) ,            
                        new SqlParameter("@CgDay", SqlDbType.DateTime) ,            
                        new SqlParameter("@CgTime", SqlDbType.Char,20) ,            
                        new SqlParameter("@PeopNum", SqlDbType.Int,4) ,            
                        new SqlParameter("@UnitName", SqlDbType.Char,50) ,            
                        new SqlParameter("@AddressID", SqlDbType.Int,4) ,            
                        new SqlParameter("@YyName", SqlDbType.Char,50) ,            
                        new SqlParameter("@YyPhoneNum", SqlDbType.Char,20) ,            
                        new SqlParameter("@UserID", SqlDbType.Int,4)             
              
            };

            parameters[0].Value = model.IfConcel;
            parameters[1].Value = model.SPID;
            parameters[2].Value = model.CgDay;
            parameters[3].Value = model.CgTime;
            parameters[4].Value = model.PeopNum;
            parameters[5].Value = model.UnitName;
            parameters[6].Value = model.AddressID;
            parameters[7].Value = model.YyName;
            parameters[8].Value = model.YyPhoneNum;
            parameters[9].Value = model.UserID;

            object obj = SQLHelper.GetSingle(strSql.ToString(), parameters);
            if (obj == null)
            {
                return 0;
            }
            else
            {

                return Convert.ToInt32(obj);

            }

------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

cmd.Parameters.Add(parameter);
                    cmd.Parameters.Clear();

我晕!!!!

+1
你Add一次,Clear所有,介个,你不是偶尔报错吧?!
报这个错误
Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。

哥醉了。。。
你单步调试下,抛出这个异常的时候,哪行代码报错?



 public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        cmd.Parameters.AddRange(cmdParms);//这里报错
                        int rows = cmd.ExecuteNonQuery();

哥是真醉了!
1、SqlCommand是引用类型,你在PrepareCommand方法已赋值,你还再AddRange一次干神马呢?
2、PrepareCommand执行完,cmd已经添加cmdParms了
  相关解决方案