今天遇到如题的问题。我简述一下,我想做的事情:本段代码主要想实现人员信息的修改。在修改的过程中,想判断每个用户的什么信息被修改了。然后构造sql语句。
SQL 采用SQLParamter的方式添加。
我从网上也查到了类似的问题,但还是没有看懂该如何解决。请各位帮我指出一下我的问题。谢谢!代码如下: private void btnModifySman_Click(object sender, EventArgs e)
        {
            string commString;
            string AddSmanLeader;            if (radBtnModSmanYes.Checked)
            {
                AddSmanLeader = "Y";
            }
            else
            {
                AddSmanLeader = "N";
            }            commString = "update M_Salesman set ";
            if (txtModSmanArea != null)
            {
                commString += "Area = @Area, ";
                
            }
            if (txtModSmanEmpid != null)
            {
                commString += "Employeeid = @Employeeid, ";
                
            }            commString += "Manager = @Manager where Code = @Code";            string connString = ConfigurationManager.ConnectionStrings["sitvConnectionString"].ConnectionString.ToString();
            SqlConnection conn = new SqlConnection(connString);            try
            {
                SqlCommand ModSman = new SqlCommand(commString, conn);
                ModSman.Parameters.Clear();
                SqlParameter paramModSmanLead = new SqlParameter("@Manager", SqlDbType.Char, 1);
                paramModSmanLead.Value = AddSmanLeader;
                ModSman.Parameters.Add(paramModSmanLead);                SqlParameter paramModSmanCode = new SqlParameter("@Code", SqlDbType.Char, 10);
                paramModSmanCode.Value = comboModSmanCode.Text.ToString();
                ModSman.Parameters.Add(paramModSmanCode);                if (txtModSmanArea != null)
                {
                    SqlParameter paramModSmanArea = new SqlParameter("@Area", SqlDbType.Char, 2);
                    paramModSmanArea.Value = txtModSmanArea.Text;
                    ModSman.Parameters.Add(paramModSmanArea);
                }                if (txtModSmanEmpid != null)
                {
                    SqlParameter paramModSmanEmpid = new SqlParameter("@Employeeid", SqlDbType.Char, 10);
                    paramModSmanEmpid.Value = txtModSmanEmpid.Text;
                    ModSman.Parameters.Add(paramModSmanLead);
                }                                conn.Open();
                ModSman.ExecuteNonQuery();                txtModSmanArea.Text = "";
                txtModSmanEmpid.Text = "";
                radBtnModSmanYes.Checked = true;
            }
            catch (Exception ex)
            {                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

解决方案 »

  1.   

    问题已经解决只要把SqlParameter paramModSmanLead = new SqlParameter("@Manager", SqlDbType.Char, 1);
                    paramModSmanLead.Value = AddSmanLeader;
                    ModSman.Parameters.Add(paramModSmanLead);转换为
     SqlParameter paramModSmanLead = ModSman.Parameters.Add("@Manager", SqlDbType.Char, 1);
                    paramModSmanLead.Value = AddSmanLeader;但是什么原因有谁能解释下吗?
      

  2.   

    先创建Parameters的实例,然后给它赋值,就象实例化类的对象
      

  3.   

    ModSman.Parameters.Add("@Manager", SqlDbType.Char, 1); 
    这个方法返回的是一个SqlParameter 参数是3个
    而你
        ModSman.Parameters.Add(paramModSmanLead); 
    这样传入一个SqlParameter当然是不可以的
      

  4.   

    TO: mzmxchenweij:   我原来的diamond里已经把它进行实例化了。TO: ericzhangbo19821111: ModSman.Parameters.Add(paramModSmanLead);是允许的!