无法将数据更新到SQL表中。

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

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

你从SQL Server那里得到了任何错误吗?Email和UserId列的类型是什么?它们足够大以包含您尝试存储的数据吗? - Steve Czetty
没有错误,但数据没有更新为新的1。 - Clarify Seeker
如果您正在使用SQL Server,我建议运行分析器以查看发送到数据库的内容。然后您可以在SSMS中直接进行测试。 - HLGEM
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; 
}

1

您从未执行您的SQL语句,所以我非常惊讶您的数据库居然在更新。

请查看ExecuteNonQuery方法。使用您当前的查询语句,您正在创建一个SQLCommand,但从未运行该SQL语句。


0

请尝试以下操作

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

在你分配它之后,然后

cmd.ExecuteNonQuery();

尝试使用 cmd.Connection.Open() 代替 conn.Open - Conrad Lotz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接