文本框未发送输入的值

时间:2013-03-19 16:08:26

标签: c# asp.net .net

我在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_Click proc: -

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#,所以我无疑需要学习一些技巧。

2 个答案:

答案 0 :(得分:4)

您无法更新任何调用ExecuteReader的记录,因为这是针对SELECT语句(读取数据)。如果要更新数据库中的数据,则必须调用ExecuteNonQuery

所以将代码更改为:

command.ExecuteNonQuery();

答案 1 :(得分:3)

变化:

  command.ExecuteReader();

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

你可以省略@

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