【发布时间】:2016-03-25 06:32:56
【问题描述】:
我的页面上有一个Asp.net 应用程序,用户请求删除用户。然后这会填充我的“Admin_TaskList”数据库。
然后管理员进入站点的安全区域并输入用户名并单击按钮。确认后,该用户将从我的“用户”数据库中删除(已经开始工作),但我希望我的“Admin_TaskList”数据库“状态”列从“待办事项”更改为“已完成”。
我很伤心,我的删除位正在工作,但我正在努力更新我的另一个表。
我尝试过的代码片段
conn.Open();
SqlCommand cmd2 = new SqlCommand("UPDATE FROM Admin_TaskList SET Status = 'Complete' WHERE Description = 'Remove User' AND Name = @Name", conn);
cmd2.Parameters.AddWithValue("@Name", txtRemoveUser.Text);
SqlDataReader rd2 = cmd2.ExecuteReader();
conn.Close();
完整代码
public void btnRemoveConfirmYes_Click(object sender, EventArgs e)
{
string connection = ConfigurationManager.ConnectionStrings["PaydayLunchConnectionString1"].ConnectionString;
SqlConnection conn = new SqlConnection(connection);
conn.Open();
SqlCommand cmd1 = new SqlCommand("DELETE FROM Users WHERE Name = @Name", conn);
cmd1.Parameters.AddWithValue("@Name", txtRemoveUser.Text);
SqlDataReader rd1 = cmd1.ExecuteReader();
conn.Close();
conn.Open();
SqlCommand cmd2 = new SqlCommand("UPDATE FROM Admin_TaskList SET Status = 'Complete' WHERE Description = 'Remove User' AND Name = @Name", conn);
cmd2.Parameters.AddWithValue("@Name", txtRemoveUser.Text);
SqlDataReader rd2 = cmd2.ExecuteReader();
conn.Close();
txtRemoveUser.Text = "";
Response.Redirect("/AdminSide/TaskList.aspx");
}
【问题讨论】:
-
你不需要关闭和重新打开命令之间的连接。
-
最好写一个 Stored Proc 并同时执行这两个操作,即更新和删除。
-
@RahulSingh 您不需要存储过程,您可以在单个
SqlCommand执行中发送命令批处理。 -
为什么你在
DELETE和UPDATE语句中使用ExecuteReader而不是ExecuteNonQuery?这没有意义。 -
另外,请使用
ExecuteNonQuery而不是ExecuteReader,因为您没有任何 SELECT 语句。
标签: c# asp.net sql-server webforms