2016-07-20 25 views
2

我試圖更新sql數據庫中的特定值。
我一直在搜索堆棧和msdn以及使用我從另一個用戶收到的示例,但是我似乎仍然無法解決問題,而且我的手已懸空。試圖通過C#控制檯更新SQL數據庫中的特定值

 Console.WriteLine("Which time would you like to edit for group {0}?",newGroup); 
     string ClassTime = Console.ReadLine(); 
     Console.WriteLine("Enter the current teacher and classroom for {0}",newGroup); 
     string teacherandclassroom = Console.ReadLine(); 
     Console.WriteLine(string.Format("Enter the new teacher and classroom number for group {0} at {1} ",newGroup,ClassTime)); 
     string newTeacherClassRoom = Console.ReadLine(); 
     SQLCONN.Open(); 
     using (SqlCommand cmd1 = 
      new SqlCommand("UPDATE mondayTable SET " + ClassTime +" [email protected]"+ClassTime + " WHERE " + ClassTime + "@=" + teacherandclassroom, SQLCONN)) //or WHERE newGroup? 
     { 
      cmd1.Parameters.AddWithValue("@" + ClassTime, newTeacherClassRoom); 
      cmd1.Parameters.AddWithValue("@" + teacherandclassroom, teacherandclassroom); 
      cmd1.ExecuteNonQuery(); 
      Console.WriteLine("Database Updated..."); 
     } 
     Console.ReadKey(); 

我沒有收到任何錯誤,因此,我很難調試。

下面是我輸入的值,如果它有任何區別。

[從上到下]
09:00-09.40
ANDREWW
ANDREW 7

正在使用的表。

CREATE TABLE [dbo].[mondayTable] (
[SAT]   VARCHAR(50)   NOT NULL, 
[09:00-09.40] VARCHAR (MAX) NULL, 
[10:10-10:50] VARCHAR (MAX) NULL, 
[11.00-11:40] VARCHAR (MAX) NULL, 
[11:50-12:30] VARCHAR (MAX) NULL, 
[12:40-13:20] VARCHAR (MAX) NULL, 
[13:30-14:10] VARCHAR (MAX) NULL, 
[14:20-15:00] VARCHAR (MAX) NULL, 
[15:10-15:50] VARCHAR (MAX) NULL, 
[16:00-16:40] VARCHAR (MAX) NULL, 
[16:50-17:30] VARCHAR (MAX) NULL, 
[17:40-18:20] VARCHAR (MAX) NULL, 
[18:30-19:10] VARCHAR (MAX) NULL, 
[19:20-20:00] VARCHAR (MAX) NULL, 
PRIMARY KEY CLUSTERED ([SAT] ASC) 
); 
+1

那些必須是我見過的最奇怪的一些列名稱...... – Tim

+0

同意了,每個時期都與時間有關。 – Werdna

+0

您是否已經通過調試器中的代碼來查看實際發送的SQL是什麼? – Tim

回答

0

嘗試使用括號和@是在=

using (SqlCommand cmd1 = new SqlCommand("UPDATE mondayTable SET [" + ClassTime +"] = @newValue WHERE [" + ClassTime + "] = @oldValue", SQLCONN)) //or WHERE newGroup? 
{ 
    cmd1.Parameters.AddWithValue("@newValue", newTeacherClassRoom); 
    cmd1.Parameters.AddWithValue("@oldValue", teacherandclassroom); 
    cmd1.ExecuteNonQuery(); 
    Console.WriteLine("Database Updated..."); 
} 

錯誤的一面,但你的代碼允許SQL注入......照顧它。

+0

感謝您的回答,我會給它一個鏡頭,問題,使用參數,我總是被告知停止幫助停止注射?真的嗎? – Werdna

+0

如果您在查詢中沒有連接字符串,它會停止... – lmcarreiro

+0

不幸的是,您寫的解決方案無效或出現任何錯誤,這要感謝指出@符號位於錯誤的一邊,並且感謝您的貢獻。 – Werdna