【问题标题】:C#: ExecuteNonQuery() ExceptionC#:ExecuteNonQuery() 异常
【发布时间】:2017-06-16 09:30:50
【问题描述】:

实际上我有一个页面来更新个人资料信息。我有这样的代码

控制器

      if (ModelState.IsValid)
        {
            string UpdateClinicName = null;
            string UpdateDrname = null;
            string UpdateClinicFullAddress = null;
            string UpdateClinicFaxNo = null;
            string UpdateClinicPhone = null;
            string UpdateMOHRegistration = null;
            string UpdateClinicEmail = null;
            string UpdateContactID = null;
            string UpdateHospitalRegistrationNo = null;

                // Getting GroupID
            string GroupIDdrinin = null;
            GroupIDdrinin = Profiledatainfo.GroupID;

                // Getting ContactID
            UpdateContactID = Profiledatainfo.CContactID;

               // Getting ClinicName 
            UpdateClinicName = Profiledatainfo.Clinicname;

               // Getting Dr name 
            UpdateDrname = Profiledatainfo.Doctorname;

              // Getting ClinicFullAddress
            UpdateClinicFullAddress = Profiledatainfo.ClinicFullAddress;

              // Getting ClinicPhone 
            UpdateClinicPhone = Profiledatainfo.ClinicPhone;

              // Getting MOHRegistrationNo
            UpdateMOHRegistration = Profiledatainfo.MOHRegistrationNo;


              // Getting FaxNo
            UpdateClinicFaxNo = Profiledatainfo.ClinicFaxNo;

              // Getting Clinic Mail 
            UpdateClinicEmail = Profiledatainfo.ClinicBusinessEmail;

              // Getting HospitalRegistrationNo

            UpdateHospitalRegistrationNo = Profiledatainfo.RegistrationNo;

            ClinicProfileTimingModelDAL UpdateProfileInfo = new ClinicProfileTimingModelDAL();

              // Updating ProfileInformation 
            int Upstatus = UpdateProfileInfo.UpdateClinicProfile(UpdateContactID, UpdateClinicPhone, UpdateClinicFaxNo, UpdateClinicFullAddress, UpdateClinicEmail);
            int Uregistatus = UpdateProfileInfo.UpdateClinicRegistration(GroupIDdrinin, UpdateMOHRegistration, UpdateHospitalRegistrationNo);

        }

型号

  public class ClinicProfileTimingModelDAL
{

    public int UpdateClinicProfile(string ContactID, string ClinicPhone, string ClinicFaxNo, string ClinicAddress, string ClinicBusiessMail)
    {

        SqlConnection myConnection = new SqlConnection("DataBase Conn details");
        myConnection.Open();
        SqlCommand sqlCmd = new SqlCommand();
        sqlCmd.CommandType = CommandType.Text;
        sqlCmd.CommandText = "Execute SpClinicDetAmendMVC " + ContactID + ",'" + ClinicPhone + "','" + ClinicFaxNo + "','" + ClinicAddress + "','" + ClinicBusiessMail + "'";
        //sqlCmd.CommandText = "Select ConfirmVisitID,MemberID,GroupID,RecStatus,CreateUserID,VisitDate from tblConfirmVisit where Cast(VisitDate as Date)='" + Vstdate + "' and CreateUserID="+createuserid+"";


        sqlCmd.Connection = myConnection;
        int Msg = 0;
        Msg = sqlCmd.ExecuteNonQuery();
        myConnection.Close();
        return Msg;

    }

    public int UpdateClinicRegistration(string GroupID, string HospitalResitrationno, string MOHRegistrationNo)
    {

        SqlConnection myConnection = new SqlConnection("DataBase Conn details");
        myConnection.Open();
        SqlCommand sqlCmd = new SqlCommand();
        sqlCmd.CommandType = CommandType.Text;
        sqlCmd.CommandText = "Execute spupdateProfileInfoMVC '" + GroupID + "'," + HospitalResitrationno + "," + MOHRegistrationNo + "";
        sqlCmd.Connection = myConnection;
        int Msg = 0;
        Msg = sqlCmd.ExecuteNonQuery();
        myConnection.Close();
        return Msg;

    }

}

因此,当我尝试更新配置文件信息时,出现异常“我收到 .ExecuteNonQuery() 错误。用户代码未处理 SqlException //',' 附近的语法不正确。

所以我在模型部分尝试了另一种方法

     sqlCmd.CommandText = "Execute spupdateProfileInfoMVC(@Cid, @Cp, @Cfn, @Ca, @Cbm) "
    sqlCmd.CommandText.Parameters.AddWithValue("@Cid", ContactID );
    sqlCmd.CommandText.Parameters.AddWithValue("@Cp", ClinicPhone  );
    sqlCmd.CommandText.Parameters.AddWithValue("@Cfn", ClinicFaxNo);
    sqlCmd.CommandText.Parameters.AddWithValue("@Ca", ClinicAddress  );
    sqlCmd.CommandText.Parameters.AddWithValue("@Cbm", ClinicBusinessMail);
    sqlCmd.CommandText.ExecuteNonQuery();

这种替代方式也给出了相同的例外。那么如何解决这个问题。任何帮助表示赞赏,在此先感谢

【问题讨论】:

  • 您的查询字符串可能有无效部分,所有字符串值必须在逗号前的撇号中传递,如下所示:EXEC spupdateProfileInfoMVC '" + GroupID + "','" + HospitalResitrationno + "','" + MOHRegistrationNo + "'"
  • 不使用Execute,您可以将CommandText 设为SP 的名称,然后将CommandType 设置为CommandType.StoredProcedure 并确保参数名称与SP 参数。
  • 非常感谢@TetsuyaYamamoto。您的评论有助于我解决问题。现在我没有任何例外。但我仍然无法更新。提交更新后我仍然得到旧数据

标签: c# asp.net-mvc asp.net-mvc-4 c#-4.0


【解决方案1】:

试试这个:

qlCmd.CommandText = "Execute spupdateProfileInfoMVC '" + GroupID +
 "','" + HospitalResitrationno + "','" + MOHRegistrationNo + "'";

同理:

 sqlCmd.CommandText = "Execute SpClinicDetAmendMVC '" + ContactID + "','" + ClinicPhone + "','" + ClinicFaxNo + "','" + ClinicAddress + "','" + ClinicBusiessMail + "'";

【讨论】:

  • 确保您的 SP 参数必须根据您的示例代码全部为字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 2010-12-22
相关资源
最近更新 更多