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