2016-07-19 3 views
1

Я пытаюсь обновить значение в столбце первичного ключа в базе данных SQL с помощью консоли C#.
Я искал Интернет в течение нескольких часов, но все же не могу понять, почему моя база данных не обновляется и что-то ухудшается. Я не получаю никаких ошибок для работы.UPDATE/EDIT SQL Database from Console C#

static void editMONDAY() 
    { 
     SQLCONN.Open(); 
     var TIME = DateTime.Now; 
     SqlCommand cmd0 = new SqlCommand("SELECT * FROM dbo.mondayTable", SQLCONN); 
     SqlDataReader reader = cmd0.ExecuteReader(); 
     while (reader.Read()) 
     { 
      int n = 0; 
      Console.WriteLine("------------------------------------------------------------"); 
      Console.WriteLine(" [" + reader.GetValue(n).ToString() + " TIMES]  [TEACHER/CLASSROOM]  MONDAY " + TIME.ToString("HH:mm:ss")); 
      Console.WriteLine("------------------------------------------------------------"); 

      for (int i = 1; i < reader.FieldCount; i++) 
      { 
       Console.WriteLine(i +" - " + reader.GetName(i) + "  " + reader.GetValue(i)); 
      } 
     } 

     SQLCONN.Close(); //stop memory leaks??? wait and see! 
     Console.WriteLine("Which group would you like to edit?"); 
     string Group = Console.ReadLine(); 
     Console.WriteLine("Enter the groups new name or same name is nothing is to change"); 
     string newGroup = Console.ReadLine(); 
     Console.WriteLine("Which classtime would you like to edit?"); 
     string Class = Console.ReadLine(); 
     Console.WriteLine("Enter the new teacher and classroom number"); 
     string newClass = Console.ReadLine(); 
     //SQLCONN.Open(); 
     //update ID (SAT) 
     using (SqlCommand cmd = 
      new SqlCommand("UPDATE mondayTable SET [email protected] where [email protected]"+Group, SQLCONN)) 
     { 
      cmd.Parameters.AddWithValue("@"+Group, newGroup); 
      cmd.ExecuteNonQuery(); 
     } 
     Console.ReadKey(); 
     menu(); 

ОБНОВЛЕНИЕ: вот таблица, которую я надеюсь обновить.

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) 
); 
+0

Какая именно ошибка вы получаете? если идентификатор является автоинкрементами первичного ключа, вам не будет позволено его модифицировать, он не имеет ничего общего с C# – konkked

+0

Нет ошибок, он просто продолжается, как если бы он был успешным, я не использую номера для первичного ключа. – Werdna

+0

Что такое connectionstring? – Steve

ответ

0

Для запроса на обновление требуются два параметра @SAT и @Group, но вы поставляете только один.
Я не уверен, какое значение вы хотите задать для параметра SAT.

Однако, если вы хотите изменить старое значение SAT (Group) с помощью новой группы, тогда вы должны добавить его.

// Do not close before or reopen here 
SQLCONN.Open(); 

using (SqlCommand cmd = 
    new SqlCommand("UPDATE mondayTable SET [email protected] where [email protected]"+Group, SQLCONN)) 
{ 
    cmd.Parameters.AddWithValue("@SAT", newGroup); 
    cmd.Parameters.AddWithValue("@"+Group, Group); 
    cmd.ExecuteNonQuery(); 
} 
+0

ohhhh Я вижу, поэтому каждый раз, когда у вас есть символ @, для каждого из них требуется параметр, спасибо за то, что помогли мне понять, я думал, что мой запрос был проблемой. – Werdna

+0

Да, каждый @ вводит параметр в запрос. Затем объект команды должен иметь соответствующий параметр в своей коллекции. Но действительно вы не видите здесь какого-либо исключения? У вас есть try/catch на верхнем уровне, который улавливает и скрывает ошибку? – Steve

+0

Спасибо за ваши знания, да, единственное время, когда есть инструкция try, находится в самом начале, когда он проверяет, есть ли соединение, быстро, где вы говорите, что @ вводит параметр, где он имеет «@Sat», newGroup ", почему у вас должна быть новая группа? например, что произойдет, если новая группа не находится на столе? – Werdna