Re[2]: Грамотно обработать исключения при работе c SQL Serve
От: Ranger_XL  
Дата: 11.01.07 15:13
Оценка:
Здравствуйте, kostya.misura, Вы писали:

Спасибо — именно то, что нужно!

KM>ИМХО вместо явного использования метода SqlTransaction.Rollback, гораздо удобнее оборачивать транзакцию в блок using.


Вариант c try { rollback() } был взят из примера в MSDN, с using() все намного красивее.

KM>1. Я бы использовал вместо динамческой генерации sql, параметры. Это спасает от всяких бяк типа sql injection + код в таком случае выглядит нагляднее + теоретическая прибавка к performance (ADO.NET исполняет все запросы через sp_executesql, которая умеет кешировать план запроса)


SQL injection нам не грозит (данные берутся из надежного и правильного источника), а вот на счет кеширования вопрос:
писать до цикла:
    cmd.Parameters.Add("@data_type", SqlDbType.VarChar, 10);

а затем в цикле
    cmd.Parameters["data_type"].Value = rec.data_type;

это принципиально для ускорения или же
    cmd.Parameters.Add("@data_type", SqlDbType.VarChar, 10).Value = rec.data_type ;

в цикле даст такой же результат? (реальное число полей для сохранения ~20.)

KM>2. Вместо for в данном случае, по-моему удобнее использовать foreach.


У foreach() реально есть какие-то преимущества или только наглядность?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.