2015-12-18 23 views
2

我在我的页面上有一个Asp.net应用程序,用户请求删除用户。然后填充我的'Admin_TaskList'数据库。Asp.Net SQL更新声明

管理员然后进入网站的安全区域并输入用户名并单击按钮。确认后,用户从我的用户数据库中删除(已经得到这个工作),但我想要我的'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"); 
     } 
+0

您不需要关闭并重新打开命令之间的连接。 – Dai

+0

最好编写一个_Stored Proc_并执行这两个操作,即更新和删除。 –

+0

@RahulSingh你不需要一个存储过程,你可以在一个'SqlCommand'执行中发送一个命令批处理。 – Dai

回答

3

而不是使用SqlDataReader更新值使用SqlCommand.ExecuteNonQuery的:

int updated = cmd2.ExecuteNonQuery(); 

请记住,您需要在修改数据的命令上使用ExecuteNonQuery,例如DeleteInsertUpdate

MSDN:

可以使用ExecuteNonQuery在数据库中执行目录操作( 例如,查询数据库的结构或创建数据库 对象,如表),或改变数据没有 通过执行UPDATE,INSERT或DELETE语句使用DataSet。

完整的方法:

int deleted, updated; 
string connection = ConfigurationManager.ConnectionStrings["PaydayLunchConnectionString1"].ConnectionString; 

using (var conn = new SqlConnection(connection)) 
{ 
    conn.Open(); 
    string delSql = "DELETE FROM Users WHERE Name = @Name"; 
    using (var cmd = new SqlCommand(delSql, conn)) 
    { 
     cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = txtRemoveUser.Text; 
     deleted = cmd.ExecuteNonQuery(); 
    } 

    string updSql = @"UPDATE Admin_TaskList 
         SET Status = 'Complete' 
         WHERE Description = 'Remove User' 
         AND Name = @Name"; 
    using (var cmd = new SqlCommand(updSql, conn)) 
    { 
     cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = txtRemoveUser.Text; 
     updated = cmd.ExecuteNonQuery(); 
    } 
} 
+0

我正在努力理解如何实现这一点。我只为3wks做了开发,所以请耐心等待。你可以提供你的意思请 – murday1983

+0

@ murday1983:看看 –

+0

谢谢,但我得到以下服务器错误“ExecuteNonQuery:连接属性尚未初始化。”为'updated = cmd1.ExecuteNonQuery();'行 – murday1983