1

rId ページには 2 つのテキスト ボックスがあります。1 つは UserId 用で、もう 1 つは電子メール用です。どちらもテーブル aspnet_membership から取得されたデータであり、「読み取り専用」に設定されています。メールのテキスト ボックスの場合、読み取り専用 = false に変更されます。次に、ユーザーは新しいメールを入力し、保存ボタンを押します。テーブル内の電子メールを新しい電子メールで更新する必要がありますが、残念ながら変更は行われていません。機能させるために何を削除/追加する必要があるか教えてもらえますか。これが私のコードです。

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

 protected void Button4_Click(object sender, EventArgs e)
{
    TextBox2.ReadOnly = false;
}

protected void Button3_Click(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
    SqlCommand cmd = new SqlCommand("UPDATE aspnet_membership SET Email = @email WHERE UserName = @id1", conn);

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

}
4

4 に答える 4

1
I have refatored your code, now it should work

protected void Button3_Click(object sender, EventArgs e){
SqlConnection conn = new   SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
SqlCommand cmd = new SqlCommand("UPDATE aspnet_membership SET Email = @email WHERE UserName = @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();
   }
 }
于 2012-09-12T14:08:07.203 に答える
1

あなたのコードは、データ ソースにデータをコミットする兆候を示していません。

データ アダプターが必要であり、その挿入コマンドを上記のコマンドに設定する必要があります。

SQLDataAdapter adapt = new SQLataAdapter();

次に、接続を開く必要があります:-

conn.open();

adapt.UpdateCommand = cmd;

adapt.UpdateCommand.ExecuteNonQuery()

conn.close();

お役に立てれば。

于 2012-09-12T14:10:24.817 に答える
1

接続を開くのを忘れたようです

con.Open();

コマンドを実行

cmd.ExecuteNonQuery();

その後、接続を閉じます

con.Close();
于 2012-09-12T13:53:43.850 に答える
0

ボタンクリックイベントでメンバーシップクラスを介してユーザーを直接更新してみることができます:

protected void Button3_Click(object sender, EventArgs e)
{
     var memUser = Membership.GetUser(TextBox3.Text) //Fetch the user by user Id
     memUser.Email = TextBox2.Text // Assign the new email address
     Membership.UpdateUser(memUser) // update the user record.
}
于 2012-09-12T13:59:49.447 に答える