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 文本框中输入新文本,当我单击 Update Details 按钮时,Name.Text 始终显示原始文本,而不是修改后的文本。

我究竟做错了什么?我正在将自己从 VB 转换为 C#,所以毫无疑问我会学习一些技巧。

4

2 回答 2

4

您不能更新任何记录调用ExecuteReader,因为这是 SELECT 语句(读取数据)。如果要更新数据库中的数据,必须调用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 回答