2014-09-05 84 views
0

我的工作中,我必須使用更新查詢一個項目,但問題是成功執行該查詢後的數據沒有更新 這裏是我的代碼更新查詢執行成功但不更新數據

protected void Update_btn_Click(object sender, EventArgs e) 
{ 
    var aid = Convert.ToInt32(Session["Aid"].ToString()); 
    try 
    { 
     var conn = ConfigurationManager.ConnectionStrings["AccountsConnectionString"].ConnectionString; 
     using (var con = new SqlConnection(conn)) 
     { 
      con.Open(); 
      string query = "Update Tasks set [email protected],[email protected] WHERE [email protected] and [email protected]"; 
      var cmd = new SqlCommand(query, con); 
      cmd.Parameters.AddWithValue("@tname", taskname_tb.Text); 
      cmd.Parameters.AddWithValue("@tdetails", Detail_ta.Text); 
      cmd.Parameters.AddWithValue("@id",Convert.ToInt32(id_tb.Text)); 
      cmd.Parameters.AddWithValue("@aid",aid); 
      cmd.ExecuteNonQuery(); 
      Response.RedirectPermanent("~/AllTasks.aspx",false); 
     } 
    } 
    catch (Exception exception) 
    { 
     Response.Write("<script>Some Error occured</script>"); 
    } 
} 

嘗試參數不轉換爲int32 但相同的結果 也當在sql中運行查詢它工作正常。

表任務的架構

CREATE TABLE [dbo].[Tasks] (
[Id]   INT   IDENTITY (1, 1) NOT NULL, 
[TaskName]  VARCHAR (500) NOT NULL, 
[TaskDetails] VARCHAR (MAX) NOT NULL, 
[CreationDate] DATETIME  NOT NULL, 
[CreatedBy] INT   NOT NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC), 
CONSTRAINT [FK_Tasks_ToAccounts] FOREIGN KEY ([CreatedBy]) REFERENCES [dbo].[Accounts] ([Id]) 

);下面的查詢

+2

你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/ 05/12/can-we-stop-using-addwithvalue-already /)並停止使用'.AddWithValue()' - 它可能導致意想不到的和令人驚訝的結果... – 2014-09-05 18:56:57

+1

我不知道有關AddWithValue的問題。這很好。但爲了以防萬一...桌子上的任何觸發器?當這種奇怪的行爲發生時,我總是會責怪觸發器。 – RThomas 2014-09-05 19:06:05

+0

@marc_s甚至沒有像那樣工作'cmd.Parameters.Add(「@ tname」,SqlDbType.VarChar).Value = taskname_tb.Text;' – Mohsin 2014-09-05 19:08:44

回答

0

首先試運行

SELECT * FROM任務其中id = @ ID和CreatedBy = @援助

應該返回一行。

第二次嘗試在應用程序運行時重命名數據庫文件。由於您尚未手動處理連接,所以如果嘗試重命名/刪除數據庫文件系統,則不應允許它。

+0

是的,上面的查詢返回一條記錄,其次它不允許在應用程序運行時重命名數據庫 – Mohsin 2014-09-06 04:09:15

0

問題以上的問題,我發現 我沒有Page_Load()所以添加Is.Postback當我點擊更新按鈕很多思考後問題Asp.Net頁面頁面生命週期出現並再次將其取出舊值和更新所以我無法看到任何變化因爲它正在更新舊數據

+1

在任何時候您似乎都沒有真正檢查實際的數據庫值 – 2014-09-07 11:27:50