2009-09-25 3 views
1

Я пытался адаптировать свой код (а WebService), чтобы получить SQLServerMessages:SqlConnection.SqlInfoMessageEvent не стреляя

SqlConnection c = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString); 

//capture the infomessage event to capture 
c.InfoMessage += delegate(object sender, SqlInfoMessageEventArgs e) 
{ 
    serverMessages += e.Message; //"\n" + e.Message 
}; 

SqlDataAdapter dAdapter = new SqlDataAdapter(query, c); 
SqlCommandBuilder cBuilder = new SqlCommandBuilder(dAdapter); 

DataTable dTable = new DataTable("C"); 
dAdapter.Fill(dTable); 

Но в то время как dTable заполняет красиво, то serverMessages струна остается пустым (который должен вернуться по крайней мере, на 1 строку, точно так же, как MS SQL Server MMS.) Я, очевидно, пропустил что-то важное. Любая помощь приветствуется!

ответ

1

Событие InfoMessage передает только PRINT операторы и ошибки низкого уровня (степень важности 10 или ниже), а не сообщение счетчика строк.

Чтобы проверить код (который выглядит нормально), попробуйте добавить оператор PRINT в текст своей команды или в базовую процедуру.

Если вы хотите, чтобы захватить число строк, просто добавить что-то вроде этого после соответствующего заявления (ы):

PRINT '(' + cast(@@Rowcount as varchar(32)) + ' row(s) affected)' 
0

InfoMessage только фиксирует выход операторов PRINT.

Возможно, некоторые строки вашего кода TSQL помогут нам.

0

DataTable dTable = новый DataTable («C»); DataTable -> DataSet

+0

лучше, если ответ очерчен. – Nizam

Смежные вопросы