我有一个问题。当我把这段代码
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;**
使用上述代码将数据保存到数据库中。有人可以告诉我为什么吗?提前谢谢。
答案 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();