2016-07-20 6 views
2

SQLデータベースの特定の値を更新しようとしています。
私はstackとmsdnの両方を検索しているだけでなく、別のユーザーから受け取った例を使用していますが、私はまだそれを動作させるように見えますが、私の手は空中に浮かんでいます。c#consoleを使用して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(); 

エラーが発生していないため、デバッグが難しいです。

ここに入力した値は違いがあります。

使用されているテーブル
ANDREW 7


09:00-09.40
ANDREWW [上から下へ]。

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

関連する問題