2015-12-18 113 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