0

私はaspxに次のhtmlを持っているので、それはすでにフォームになっています:-

<asp:TextBox ID="Name" runat="server" MaxLength="50" Width="175px"></asp:TextBox>

私はボタンを持っています:-

<asp:Button ID="updateDetails" Text="Update Details" runat="server" OnClick="updateDetails_Click" />

背後にあるコードには、updateDetails_Clickprocがあります:-

protected void updateDetails_Click(object sender, EventArgs e)
{
    utils utils = new utils();
    string connectionString = ConfigurationManager.ConnectionStrings[utils.liveTest() + "arenadestinationsConnectionString"].ToString();

    string SQL = "UPDATE Users SET "
                + "Name = @Name, "                            
                + "WHERE IdUser = @iDUser";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(SQL, connection);

        command.Parameters.AddWithValue("@Name", Name.Text);
        command.Parameters.AddWithValue("@iDUser", Session["loggedIn"].ToString());

        try
        {
            connection.Open();
            command.ExecuteReader();
        }
        catch
        {

        }
        finally
        {
            connection.Close();
        }
    }
}

[名前]テキストボックスに新しいテキストを入力した場合、[詳細の更新]ボタンをクリックすると、Name.Textには常に元のテキストが表示され、変更されたテキストは表示されません。

私は何が間違っているのですか?私は自分自身をVBからC#に変換しているので、学ぶべきいくつかのトリックがあることは間違いありません。

4

2 に答える 2

4

ExecuteReaderこれはSELECTステートメント(データの読み取り)の場合であるため、呼び出しているレコードを更新することはできません。DB内のデータを更新する場合は、ExecuteNonQuery

したがって、コードを次のように変更します。

command.ExecuteNonQuery();
于 2013-03-19T16:11:48.717 に答える
3

変化する:

  command.ExecuteReader();

  command.ExecuteNonQuery(); // This is for insert, update, delete

そして、あなたはで省略できます@

    command.Parameters.AddWithValue("Name", Name.Text);
    command.Parameters.AddWithValue("iDUser", Session["loggedIn"].ToString());
于 2013-03-19T16:11:25.497 に答える