Здравствуйте.
Возникла непонятная для меня ситуация, в написанной программе не обновляются данные в БД 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]. МенеджментСтудио пропускает такой запрос, программа - нет.
Спасибо за помощь!