【问题标题】:Getting error : No value given for one or more required parameters出现错误:没有为一个或多个必需参数提供值
【发布时间】:2013-10-05 11:01:35
【问题描述】:

下面是我的更新查询,它工作正常,但是当我(最后)在参数字段中添加 int DrId 以检查 where 条件时,之后它向我显示以下错误

No value given for one or more required parameters. 错误在哪里,因为DrId是我的主键我不会更新它

public bool UpdateDrMaster(string title, string FirstName, string Mname, string lastName, string regNo, string speciality, string contactNo1, string contactNo2, string city, string addrss, string pincode, string emailId, string fee_unit, string fee, string DrType, bool displayType,int DrId)
        {
            bool flag = false;
            try
            {
                string sql = "UPDATE Doctor_Master SET [Title]=@Title,[FirstName]=@FirstName,[MiddleName]=@MiddleName,[LastName]=@LastName,[RegistrationNo]=@RegistrationNo,[Speciality]=@Speciality,[ContactNo_1]=@ContactNo_1,[ContactNo_2]=@ContactNo_2,[City]=@City,[Address]=@Address,[Pincode]=@Pincode,[Email_ID]=@Email_ID,[Fee_Unit]=@Fee_Unit,[Fee]=@Fee,[Type_of_Dr]=@Type_of_Dr,[Display]=@Display,[Hide_Date]=@Hide_Date WHERE Doctor_ID=" +DrId;

                cmd = new OleDbCommand(sql, acccon);
                 cmd.Parameters.AddWithValue("@Title", title);
                 cmd.Parameters.AddWithValue("@FirstName", FirstName);
                 cmd.Parameters.AddWithValue("@MiddleName", Mname);
                 cmd.Parameters.AddWithValue("@LastName", lastName);
                 cmd.Parameters.AddWithValue("@RegistrationNo", regNo);
                 cmd.Parameters.AddWithValue("@Speciality", speciality);
                 cmd.Parameters.AddWithValue("@ContactNo_1", contactNo1);
                 cmd.Parameters.AddWithValue("@ContactNo_2", contactNo2);
                 cmd.Parameters.AddWithValue("@City", city);
                 cmd.Parameters.AddWithValue("@Address", addrss);
                 cmd.Parameters.AddWithValue("@Pincode", pincode);
                 cmd.Parameters.AddWithValue("@Email_ID", emailId);
                 cmd.Parameters.AddWithValue("@Fee_Unit", fee_unit);
                 cmd.Parameters.AddWithValue("@Fee", fee);
                 cmd.Parameters.AddWithValue("@Type_of_Dr", DrType);
                 cmd.Parameters.AddWithValue("@Display", displayType);
                 cmd.Parameters.AddWithValue("@Hide_Date", System.DateTime.Now.ToShortDateString());                            
                cmd.ExecuteNonQuery();
                flag = true;
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message.ToString());
            }
            return flag;
        }

【问题讨论】:

    标签: c# ms-access


    【解决方案1】:

    您的更新查询中有Doctor_Id,但您没有为其设置值。即使您不打算更新它的值,您也必须为其设置一个值作为 where 类的一部分。

    string sql = "UPDATE Doctor_Master SET [Title]=@Title,[FirstName]=@FirstName,[MiddleName]=@MiddleName,[LastName]=@LastName,[RegistrationNo]=@RegistrationNo,[Speciality]=@Speciality,[ContactNo_1]=@ContactNo_1,[ContactNo_2]=@ContactNo_2,[City]=@City,[Address]=@Address,[Pincode]=@Pincode,[Email_ID]=@Email_ID,[Fee_Unit]=@Fee_Unit,[Fee]=@Fee,[Type_of_Dr]=@Type_of_Dr,[Display]=@Display,[Hide_Date]=@Hide_Date WHERE Doctor_ID=" +DrId;
    

    【讨论】:

      【解决方案2】:

      为什么不试试这个!!!将您的参数名称替换为 ?

       public bool UpdateDrMaster(string title, string FirstName, string Mname, 
          string lastName, string regNo, string speciality, string contactNo1, 
          string contactNo2, string city, string addrss, string pincode, string emailId, 
          string fee_unit, string fee, string DrType, bool displayType,int DrId)
                  {
                      bool flag = false;
                      try
                      {
                          string sql = "UPDATE Doctor_Master SET Title=?FirstName=?,
          MiddleName=?,LastName=?,RegistrationNo=?,Speciality=?,ContactNo_1=?,
          ContactNo_2=?,City=?,Address=?,Pincode=?,Email_ID=?,Fee_Unit=?,Fee=?,
          Type_of_Dr=?,Display=?,Hide_Date=? WHERE Doctor_ID=?";
      
                          cmd = new OleDbCommand(sql, acccon);
                           cmd.Parameters.AddWithValue("@Title", title);
                           cmd.Parameters.AddWithValue("@FirstName", FirstName);
                           cmd.Parameters.AddWithValue("@MiddleName", Mname);
                           cmd.Parameters.AddWithValue("@LastName", lastName);
                           cmd.Parameters.AddWithValue("@RegistrationNo", regNo);
                           cmd.Parameters.AddWithValue("@Speciality", speciality);
                           cmd.Parameters.AddWithValue("@ContactNo_1", contactNo1);
                           cmd.Parameters.AddWithValue("@ContactNo_2", contactNo2);
                           cmd.Parameters.AddWithValue("@City", city);
                           cmd.Parameters.AddWithValue("@Address", addrss);
                           cmd.Parameters.AddWithValue("@Pincode", pincode);
                           cmd.Parameters.AddWithValue("@Email_ID", emailId);
                           cmd.Parameters.AddWithValue("@Fee_Unit", fee_unit);
                           cmd.Parameters.AddWithValue("@Fee", fee);
                           cmd.Parameters.AddWithValue("@Type_of_Dr", DrType);
                           cmd.Parameters.AddWithValue("@Display", displayType);
                           cmd.Parameters.AddWithValue("@Hide_Date", System.DateTime.Now.ToShortDateString()); 
            cmd.Parameters.AddWithValue("@DrId", DrId);                           
                          cmd.ExecuteNonQuery();
                          flag = true;
                      }
                      catch (Exception err)
                      {
                          MessageBox.Show(err.Message.ToString());
                      }
                      return flag;
                  }
      

      另一个可能的原因

      将您的 Db 列名称与查询列匹配。查看是否有任何字符错位或拼写错误

      【讨论】:

      • 不是一切都是正确的,在添加 where 条件后它向我显示错误,在它工作之前
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多