2013-07-07 197 views
0

我试图让我的更新功能起作用。我已经包含了txtPassword和txtConfirmPassword文本框。两个文本框必须匹配更新之前,但我得到这个错误:ExecuteNonQuery:CommandText属性尚未初始化

ExecuteNonQuery: CommandText property has not been initialized 

我该如何使它工作?这里是我的代码:

protected void btnUpdateAccount_Click(object sender, EventArgs e) 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = con; 
    if (txtPassword.Text == "") 
    { 
     cmd.CommandText = "UPDATE Users SET [email protected], [email protected], " + 
      "[email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] " + 
      "WHERE [email protected]"; 
    } 
    else 
    { 
     if (txtConfirmPassword != txtPassword) 
     { 
      pnlInconsistent.Visible = true; 
     } 
     else 
     { 
      cmd.CommandText = "UPDATE Users SET [email protected], [email protected], [email protected], " + 
       "[email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] " + 
       "WHERE [email protected]"; 
     } 
     cmd.Parameters.Add("@EmailAddress", SqlDbType.NVarChar).Value = txtEmail.Text; 
     cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = Helper.CreateSHAHash(txtPassword.Text); 
     cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFN.Text; 
     cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLN.Text; 
     //cmd.Parameters.Add("@Address", SqlDbType.NVarChar).Value = txtAddress.Text; 
     cmd.Parameters.Add("@Street", SqlDbType.NVarChar).Value = txtStreet.Text; 
     cmd.Parameters.Add("@Municipality", SqlDbType.NVarChar).Value = txtMunicipality.Text; 
     cmd.Parameters.Add("@City", SqlDbType.NVarChar).Value = txtCity.Text; 
     cmd.Parameters.Add("@ZipCode", SqlDbType.NVarChar).Value = txtZipCode.Text; 
     cmd.Parameters.Add("@ContactNo", SqlDbType.NVarChar).Value = txtContact.Text; 
     cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = Session["UserID"].ToString(); 
     if (fuImage.HasFile) 
     { 
      cmd.Parameters.Add("@Image", SqlDbType.Text).Value = "~/images/" + fuImage.FileName; 
      fuImage.SaveAs(Server.MapPath("~/images/" + fuImage.FileName)); 
     } 
     else 
     { 
      cmd.Parameters.Add("@Image", SqlDbType.Text).Value = imgAvatar.ImageUrl; 
     } 


     if (txtPassword.Text != "") 
     { 
      cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = 
       Helper.CreateSHAHash(txtPassword.Text); 
     } 


     cmd.ExecuteNonQuery(); 
     con.Close(); 
     GetProfileInfo(); 

     pnlUpdated.Visible = true; 
     Helper.AddLog(Session["userid"].ToString(), "Update", "Updated Profile Information"); 
     GetProfileInfo(); 
    } 

}

回答

0

看起来,如果这if (txtConfirmPassword != txtPassword)是真正的更新查询会一直执行和commandText参数不会被设置为cmd.ExecuteNonQuery();不是的一部分else声明,它可能应该是。我猜你想停止执行查询,如果密码和txtPassword和txtConfirmPassword不匹配,但我没有看到发生。

而且这如果检查似乎是多余的,因为它仅执行如果txtPassword不为空:

if (txtPassword.Text != "") 
     { 
      cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = 
       Helper.CreateSHAHash(txtPassword.Text); 
     } 
0

您的代码还执行cmd.ExecuteNonQuery();线的情况下txtConfirmPassword != txtPassword其中CommandText未初始化。

要么添加return;这种情况只是pnlInconsistent.Visible = true;后:

if (txtConfirmPassword != txtPassword) 
{ 
    pnlInconsistent.Visible = true; 
    return; 
} 

或包裹的全部cmd.Parameters.Add()cmd.ExecuteNonQuery();在嵌套else

else 
{ 
    cmd.CommandText = "UPDATE Users SET [email protected], [email protected], [email protected], " + "[email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] " + "WHERE [email protected]"; 
    cmd.Parameters.Add("@EmailAddress", SqlDbType.NVarChar).Value = txtEmail.Text; 
    cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = Helper.CreateSHAHash(txtPassword.Text); 
    cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFN.Text; 
    cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLN.Text; 
    //cmd.Parameters.Add("@Address", SqlDbType.NVarChar).Value = txtAddress.Text; 
    cmd.Parameters.Add("@Street", SqlDbType.NVarChar).Value = txtStreet.Text; 
    cmd.Parameters.Add("@Municipality", SqlDbType.NVarChar).Value = txtMunicipality.Text; 
    cmd.Parameters.Add("@City", SqlDbType.NVarChar).Value = txtCity.Text; 
    cmd.Parameters.Add("@ZipCode", SqlDbType.NVarChar).Value = txtZipCode.Text; 
    cmd.Parameters.Add("@ContactNo", SqlDbType.NVarChar).Value = txtContact.Text; 
    cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = Session["UserID"].ToString(); 
    if (fuImage.HasFile) 
    { 
     cmd.Parameters.Add("@Image", SqlDbType.Text).Value = "~/images/" + fuImage.FileName; 
     fuImage.SaveAs(Server.MapPath("~/images/" + fuImage.FileName)); 
    } 
    else 
    { 
     cmd.Parameters.Add("@Image", SqlDbType.Text).Value = imgAvatar.ImageUrl; 
    } 


    if (txtPassword.Text != "") 
    { 
     cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = 
      Helper.CreateSHAHash(txtPassword.Text); 
    } 


    cmd.ExecuteNonQuery(); 
    con.Close(); 
    GetProfileInfo(); 

    pnlUpdated.Visible = true; 
    Helper.AddLog(Session["userid"].ToString(), "Update", "Updated Profile Information"); 
    GetProfileInfo(); 
} 
相关问题