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 を実行していないので、DB がまったく更新されていないことに非常に驚いています。

ExecuteNonQueryメソッドを見てください。現在のクエリでは、SQLCommand を作成していて、SQL を実行していません。

于 2012-09-12T17:57:41.397 に答える
0

以下を試してください

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

あなたがそれを割り当てた後、

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