Выполнить SQL запрос по нажатию Button в C# WinForms

exw777
Дата: 17.04.2014 16:19:05
Здравствуйте!
Имеется кнопка, при нажатии которой выполняется
              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 и более строк, реально в таких случаях выносить запрос в файлик или для этого проще/необходимо создать хранимую процедуру в самой бд? желательно обойтись без неё
Алексей К
Дата: 17.04.2014 16:22:46
string sql = @"
    select
        ID,
        Name 
    from MyTable
    where
        Name = 'Вася'
";
exw777
Дата: 17.04.2014 16:39:28
Алексей К,

спасибо, работает))
exw777
Дата: 28.04.2014 14:15:35
Если код выполняемый в SQL management studio дает ожидаемый результат, то выполнив его через C# (Framework 3.5)
получается как на скриншоте, такая же проблема и в построителе запросов,
т.е. те данные которые уже были в БД, в нормальной кодировке а те надписи на русском языке добавленные из программы на c# запросами вида
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
отображаются как знаки вопроса
exw777
Дата: 28.04.2014 14:17:00
Как с этим бороться? кодировку где-то в Visual Studio поменять?
exw777
Дата: 28.04.2014 14:21:08
А вообще нет, заметил такое происходит если работать с боевым сервером, на локальной машине с кодировкой проблем не замечено, все же как это исправить?!
bazile
Дата: 29.04.2014 15:25:04
exw777, 1) сравни настройки collation локальной и серверной БД
2) попробуй добавить префикс N перед русскими строкам в своем запросе
Алексей Ку.
Дата: 29.04.2014 16:40:12
exw777,

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

if(conn1.State != ConnectionState.Open)
    conn1.Open();


и вставлять такую конструкцию при каждом открытии соединения: где-то оборвётся, где не закроешь и получишь ошибку и т.д.
Cat2
Дата: 29.04.2014 19:07:06
Алексей Ку.
exw777,

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

if(conn1.State != ConnectionState.Open)
    conn1.Open();



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


Это лучше обернуть в процедуру. Причем MS рекомендует не держать коннект открытым и проверять надо не остался ли оно случайно открытым?
Например для ExecuteScalar
public static object MyExecuteScalar(SqlCommand sql)
{ 

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

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

return ret;

}