3

我有一个问题。当我把这段代码

protected void Page_Load(object sender, EventArgs e)
{
    string email = Membership.GetUser(User.Identity.Name).Email;
    MembershipUser currentUser = Membership.GetUser();
    string UserId = currentUser.ProviderUserKey.ToString();

    **TextBox2.Text = email;
    TextBox3.Text = UserId;**
}

我的数据不会保存到数据库中。

 {
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
    SqlCommand cmd = new SqlCommand("UPDATE aspnet_Membership SET Email = @email WHERE UserId = @id1", conn);

    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@email", TextBox2.Text);
    cmd.Parameters.AddWithValue("@id1", TextBox3.Text);
    try
    {
        conn.Open();
        cmd.ExecuteNonQuery();

    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        conn.Close();
    }

但是当我删除

 **TextBox2.Text = email;
TextBox3.Text = UserId;**

数据将使用上述代码保存到数据库中。有人能告诉我为什么吗?提前致谢。

4

3 回答 3

4

鉴于您从不执行命令,我无法解释。

添加

cmd.ExecuteNonQuery();

到您的点击方法结束

因为您在页面加载事件中设置值,所以当您的按钮在回发时,它们会覆盖控件中更改的值。用一个包裹你的页面加载代码

if (!Page.IsPostback)
{
    string email = Membership.GetUser(User.Identity.Name).Email; 
    MembershipUser currentUser = Membership.GetUser(); 
    string UserId = currentUser.ProviderUserKey.ToString(); 

    TextBox2.Text = email; 
    TextBox3.Text = UserId; 
}
于 2012-09-12T17:56:37.503 回答
1

您永远不会执行您的 SQL,所以我很惊讶您的数据库正在更新。

看一下ExecuteNonQuery方法。使用您当前的查询,您正在创建一个 SQLCommand,然后从不运行 SQL。

于 2012-09-12T17:57:41.397 回答
0

尝试以下

cmd.Connection = conn;
cmd.Connection.Open()

在你分配它之后

cmd.ExecuteNonQuery();
于 2012-09-12T17:57:56.107 回答