powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выполнить SQL запрос по нажатию Button в C# WinForms
9 сообщений из 9, страница 1 из 1
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38617721
exw777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Имеется кнопка, при нажатии которой выполняется
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
              SqlConnection conn1 = new SqlConnection("Data Source=server;Initial Catalog=database;Integrated Security=True");
              SqlCommand cmd1 = new SqlCommand();
              cmd1.Connection = conn1;
              conn1.Open();
              cmd1.CommandType = CommandType.Text;
              cmd1.CommandText = "INSERT INTO Table VALUES ('a','b')";
              cmd1.ExecuteNonQuery();
              conn1.Close();


Такой запрос проходит на ура, но есть запросы в которых по 2-3 и более строк, как указывать перенос строки в таком случае?
Так же есть запросы по 50 и более строк, реально в таких случаях выносить запрос в файлик или для этого проще/необходимо создать хранимую процедуру в самой бд? желательно обойтись без неё
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38617726
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
string sql = @"
    select
        ID,
        Name 
    from MyTable
    where
        Name = 'Вася'
";
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38617759
exw777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К,

спасибо, работает))
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38627742
exw777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если код выполняемый в SQL management studio дает ожидаемый результат, то выполнив его через C# (Framework 3.5)
получается как на скриншоте, такая же проблема и в построителе запросов,
т.е. те данные которые уже были в БД, в нормальной кодировке а те надписи на русском языке добавленные из программы на c# запросами вида
Код: sql
1.
2.
3.
select (select max(T_checktime.ch_t) from changes.dbo.T_checktime) ch_t,m_id,'Добавлено' ch_type,'USB-устройство' hw_type,
'ID: '+cast(udv_instance as varchar)+ CASE WHEN udv_vendor is not null then ' | Бренд: ' else '' end+ISNULL(udv_vendor,'')+
' | Наименование: '+udv_name+'Hardware ID: '+udv_hwid ch_value from snapshot.dbo.H_usbdev_upd

отображаются как знаки вопроса
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38627744
exw777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как с этим бороться? кодировку где-то в Visual Studio поменять?
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38627745
exw777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вообще нет, заметил такое происходит если работать с боевым сервером, на локальной машине с кодировкой проблем не замечено, все же как это исправить?!
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38629031
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exw777, 1) сравни настройки collation локальной и серверной БД
2) попробуй добавить префикс N перед русскими строкам в своем запросе
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38629181
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exw777,

Советую ещё делать так:

Код: c#
1.
2.
if(conn1.State != ConnectionState.Open)
    conn1.Open();



и вставлять такую конструкцию при каждом открытии соединения: где-то оборвётся, где не закроешь и получишь ошибку и т.д.
...
Рейтинг: 0 / 0
Выполнить SQL запрос по нажатию Button в C# WinForms
    #38629354
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей Ку.exw777,

Советую ещё делать так:

Код: c#
1.
2.
if(conn1.State != ConnectionState.Open)
    conn1.Open();




и вставлять такую конструкцию при каждом открытии соединения: где-то оборвётся, где не закроешь и получишь ошибку и т.д.

Это лучше обернуть в процедуру. Причем MS рекомендует не держать коннект открытым и проверять надо не остался ли оно случайно открытым?
Например для ExecuteScalar
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public static object MyExecuteScalar(SqlCommand sql)
{ 

if (sql.Connection.State != ConnectionState.Open)
	sql.Connection.Open();

object ret = sql.ExecuteScalar();
sql.Connection.Close();

return ret;

}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выполнить SQL запрос по нажатию Button в C# WinForms
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]