无法将数据更新到SQL表中

时间:2012-09-12 17:53:36

标签: c# asp.net sql

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

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;**

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

3 个答案:

答案 0 :(得分: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; 
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

尝试以下

cmd.Connection = conn;
cmd.Connection.Open()
分配后

然后

cmd.ExecuteNonQuery();