Задать вопрос

C# [РЕШЕНО] Почему не обновляются данные в SQL по запросу программы?

Здравствуйте.

Возникла непонятная для меня ситуация, в написанной программе не обновляются данные в БД SQLExpess, при этом тот же запрос без проблем выполняется в МенеджментСтудио SQL-Server2012.

Данные должны обновляться по нажатию кнопки:

private void button4_Click(object sender, EventArgs e)
        {
            if (strWindowsWork != "0")
            { // Работает окно
                sql_update_SectionWork_YES();
                sql_up();
                //label1.Text = "131313131";
            }
            else
            { // Не работает окно
                sql_update_SectionWork_NO();
                
                sql_up();
                label1.Text = strWindowsWork;
            }
        }


Где:
sql_update_SectionWork_YES(); - класс для изменения статуса окна "Работает".

private void sql_update_SectionWork_YES()
        {
            //throw new NotImplementedException();

            // Подключаемся к базе данных SQL Server (начало)

            string nameIP = "192.168.0.77";
            string nameDB = "\\SQLEXPRESS";
            string userDB = "sa";
            string passBD = "193755";

            SqlConnection cnn = new SqlConnection(@"Data Source=" +
                nameIP + nameDB + "; User ID=" +
                userDB + ";Password=" + passBD);
            try
            {
                cnn.Open();

                // Формируем запрос к базе данных - запрашиваем информацию о ЛПУ

                // Запрашиваем из настроек данные о рабочем месте (начало)
                string strCodeLPUunic = Properties.Settings.Default.CodeLPUunic;
                string strSectionNum = Properties.Settings.Default.SectionNum;
                string strSectionSubNum = Properties.Settings.Default.SectionSubNum;
                string strSectionWindowsNum = Properties.Settings.Default.SectionWindowsNum;
                // Запрашиваем из настроек данные о рабочем месте (конец)

                // Запрос получает одно значение из БД

                //string sql = "UPDATE [dbo].[InfoSectionWindows] SET [SectionWork] = '3' WHERE [CodeLPU]='42501' AND [SectionNum]='А' AND [SectionSubNum]='1' AND [SectionWindowsNum]='3'";
                string sql = "UPDATE InfoSectionWindows SET SectionWork = '3' WHERE CodeLPU='42501' AND SectionNum='А' AND SectionSubNum='1' AND SectionWindowsNum='3'";

                SqlCommand command3 = new SqlCommand(sql, cnn);

                //// Очистка

                cnn.Close();
            }
            catch (Exception ex)
            {
                label1.Text = "Нет соединения с БД ! ";
            }


            cnn.Close();

            // Подключаемся к базе данных SQL Server (конец)
        }


Класс sql_up(); отвечает за проверку статуса работы окна на месте и внесение записи в локальные настройки для снижения нагрузки на БД. Однако, он не стоит рассмотрения, т.к. верно работает в других местах. И проверка данных БД через МенеджментСтудио показывает, что обновления ячейки в БД при выполнении класса sql_update_SectionWork_YES(); не происходит.

При этом если взять сам запрос, в том числе закомментированный, то в МенеджментСтудио они выполняются без ошибок. Исключение так же не срабатывает.

Таким образом я не пойму что именно не работает.

П.С.: Как всегда основная проблема в кривых руках. )) Был не верно сформирован SQL запрос. Верный:
string sql = "UPDATE [myclinic_online_step].[dbo].[InfoSectionWindows] SET [SectionWork] = '1' WHERE [CodeLPU]='42501' AND [SectionNum]='А' AND [SectionSubNum]='1' AND [SectionWindowsNum]='2'";


Основная ошибка - отсутствие ссылки на саму БД UPDATE [myclinic_online_step]. МенеджментСтудио пропускает такой запрос, программа - нет.

Спасибо за помощь!
  • Вопрос задан
  • 2414 просмотров
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@hidden_pingvin
После инициализации SqlCommand, нужно выполнить
command3.ExecuteNonQuery();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы