2014-05-13 66 views
1

我想在按鈕單擊事件上使用我的aspx頁面更新SQL Server表的特定列。我的代碼是:更新SQL Server的按鈕點擊

if (AutoMan.Text == "Auto Mode") 
{ 
    var x = "1"; 
    var y = DateTime.Now.ToString(); 
    var z = "1"; 
    using (SqlConnection con = new SqlConnection(@"Data Source=localhost.\SQLEXPRESS;Initial Catalog=MCAS;Integrated Security=SSPI;")) 
    { 
     con.Open(); 
     try 
     { 
      using (SqlCommand cmd = new SqlCommand("UPDATE AutoManLog SET AutoMan = @data, Time = @data1", con)) 
      { 

       cmd.Parameters.AddWithValue("@data1", y); 
       cmd.Parameters.AddWithValue("@data", x); 
       cmd.ExecuteNonQuery(); 

      } 
     } 
     catch (Exception Ex) 
     { 

      Response.Write("Unable To Save Data. Error - " + Ex.Message); 
     } 
     con.Close(); 
    } 

數據庫中的數據未更新。我看不到任何錯誤消息。

+5

沒有例外嗎?你爲什麼不把主鍵添加到你的更新查詢中缺少的Where?你想更新所有行嗎?你有沒有使用調試器來查看這個代碼是否被執行? –

+3

另外,假設'Time'是日期/時間列,請嘗試傳遞'DateTime.Now'而不將其轉換爲字符串。 –

+0

'cmd.ExecuteNonQuery();'的返回值是什麼? – qxg

回答

0

在此查詢中: 「UPDATE AutoManLog SET AutoMan = @data,Time = @ data1」 時間是sql server的保存名稱;所以使用它作爲[時間]將解決問題, 如果沒有另一個問題存在。

+0

這不是一個問題--SQL服務器理解''時間'是適當的列名,並將工作得很好。 – BeemerGuy

0

我複製粘貼你的代碼,它的工作原理是一樣的;你的參數是正確的,你的陳述是正確的。

你可能問題是:

  • AutoMan.Text不等於"Auto Man" - 確保他們是平等的
  • 出現的任何錯誤(數據庫連接,表不存在,等等),但有些事是阻礙你的輸出,不能讓你看到輸出 - 取出try-catch,讓調試器捕獲錯誤,以便更好地跟蹤它