C# 无法更新数据库值

C# 无法更新数据库值,c#,asp.net,C#,Asp.net,我在第一页有两个注册页,我插入了必填字段,然后我使用userid更新了一些其他详细信息…userid是数据库中的一个标识列,所以我的更新存储过程 ALTER procedure [dbo].[sp_update] (@id int,@FormFiledBy varchar (50),@MaritalStatus varchar (50),@Height varchar (50), @Religion varchar (50),@Caste varchar (100), @MotherTo

我在第一页有两个注册页,我插入了必填字段,然后我使用userid更新了一些其他详细信息…userid是数据库中的一个标识列,所以我的更新存储过程

  ALTER procedure [dbo].[sp_update]

(@id int,@FormFiledBy varchar (50),@MaritalStatus varchar (50),@Height varchar (50),
@Religion varchar (50),@Caste varchar (100),
 @MotherTongue varchar(50),@Education varchar (100),@Occupation varchar(50),
 @CountryofResidence varchar (50),@EducationDetails varchar (100),@AnnualIncome varchar(50),
@CountryOfBirth varchar(50),@BirthPlace varchar(50),@TimeOfBirth nchar(10),@StarSign varchar (100),
@Gothram varchar (50),@Rassi varchar(50),@HavinChildren varchar(10),@PhysicalStatus varchar (100))

as
begin

update Profile_Master
 set FormFiledBy=@FormFiledBy,MaritalStatus=@MaritalStatus,Height=@Height,
Religion=@Religion,Caste=@Caste,MotherTongue=@MotherTongue,
Education=@Education,Occupation=@Occupation,CountryofResidence=@CountryofResidence,EducationDetails=@EducationDetails,
AnnualIncome=@AnnualIncome,CountryOfBirth=@CountryOfBirth,BirthPlace=@BirthPlace,TimeOfBirth=@TimeOfBirth,
StarSign=@StarSign,Gothram=@Gothram,Rassi=@Rassi,HavinChildren=@HavinChildren,PhysicalStatus=@PhysicalStatus

where UserId=@id
return
end
在我心中

 public static int update(ProfileMasterBLL profileMasterBLL)
    {
        string userid = ProfileMasterDAL.GetUserIdByEmailID(profileMasterBLL.EmailID);

        SqlConnection conn = Generic.DBConnection.OpenConnection();
        try
        {
            SqlCommand cmdd = new SqlCommand("sp_update", conn);
            cmdd.CommandType = CommandType.StoredProcedure;
            cmdd.Parameters.AddWithValue("@FormFiledBy", profileMasterBLL.FormFiledBy);
            cmdd.Parameters.AddWithValue("@MaritalStatus", profileMasterBLL.MaritalStatus);
            cmdd.Parameters.AddWithValue("@Height", profileMasterBLL.Height);
            cmdd.Parameters.AddWithValue("@Religion", profileMasterBLL.Religion);
            cmdd.Parameters.AddWithValue("@Caste", profileMasterBLL.Caste);
            cmdd.Parameters.AddWithValue("@Education", profileMasterBLL.Education);
            cmdd.Parameters.AddWithValue("@Occupation", profileMasterBLL.Occupation);
            cmdd.Parameters.AddWithValue("@CountryofResidence", profileMasterBLL.CountryofResidence);
            cmdd.Parameters.AddWithValue("@EducationDetails", profileMasterBLL.EducationDetails);
            cmdd.Parameters.AddWithValue("@CountryOfBirth", profileMasterBLL.CountryOfBirth);
            cmdd.Parameters.AddWithValue("@BirthPlace", profileMasterBLL.BirthPlace);
在我的UI中

protected void Button1_Click(object sender, EventArgs e)
    {
        // Get User ID from DAL
        int chk = 0;
        if (Session["EmailID"] != null)
        {
            emailID = Session["EmailID"].ToString();
        }
        ProfileMasterBLL prfbll = new ProfileMasterBLL();
        string userid = ProfileMasterDAL.GetUserIdByEmailID(emailID);
我可以在这里获取用户ID,但在此之后

     chk = ProfileMasterDAL.update(prfbll);
在这里,断点跳转到更新方法,我得到的emailid为null,所以我得到的userid也为null。有什么帮助吗

在我的包里

public class ProfileMasterBLL
{
    public int UserId { get; set; }
    public string FormFiledBy { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public string MaritalStatus { get; set; }
    public string HavinChildren { get; set; }
    public string EmailID { get; set; }
 }
在我的第一页中,我捕获了会话值

  Session["EmailID"] = TextBox8.Text;

还可以尝试检查空字符串。
此外,在某些点上,您的UserId是一个字符串,而不是int,您在转换和处理转换错误。在转到DB调用之前,请尝试int.TryParse()。

尝试声明字符串
emailID
,以便在
(会话[“emailID”]!=null)
后它仍在作用域中:

protected void Button1_Click(object sender, EventArgs e)
   {
       // Get User ID from DAL
       int chk = 0;

       string emailID = ""; 

       if (Session["EmailID"] != null)
       {
           emailID = Session["EmailID"].ToString();
       }
       ProfileMasterBLL prfbll = new ProfileMasterBLL();
       string userid = ProfileMasterDAL.GetUserIdByEmailID(emailID);   

设置会话变量的代码在哪里?听起来可能有问题。emailid来自第一页…如果会话[“emailid”]为空,会发生什么情况?您的代码使用空字符串或空字符串调用更新。您在哪里将其写入会话变量?代码是什么样子的?在ui页面中检查我的问题。。。