Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как оптимизировать множество SqlCommand 
:(
    Опции темы
neomax
Дата 18.2.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 22.6.2006

Репутация: нет
Всего: нет



Привет!

У меня есть код с несколькими SqlCommand - ми , надо откривать и закръвать конекцию. По-моему ето не рационально, как можно объеденить все запросъ  в одной конекции к БД?
Код

string insSQL = "INSERT INTO tbl_Configurations (ind_id, prodtype_id, created_on) VALUES (@idIndustry, @idProdtype, @crDate)";
        string slctSQL = "SELECT TOP 1 id_conf FROM tbl_Configurations ORDER BY id_conf DESC";
        SqlConnection objSQLConn = new SqlConnection(ConnectionString);
        SqlCommand sqlCommand1 = new SqlCommand(insSQL, objSQLConn);
        SqlCommand sqlCommand2 = new SqlCommand(slctSQL, objSQLConn);
        SqlDataReader dr;
       // try
       // {
          //  string idIndustry = IndustryList.SelectedItem.Value;
          //  string idProduct = ProductList.SelectedItem.Value;
            int idIndustry = 3;
            int idProduct = 2;
            DateTime crDate = DateTime.Now;

            sqlCommand1.Parameters.AddWithValue("@idIndustry", idIndustry);
            sqlCommand1.Parameters.AddWithValue("@idProdtype", idProduct);
            sqlCommand1.Parameters.AddWithValue("@crDate", crDate);
            
            objSQLConn.Open();
            sqlCommand1.ExecuteReader();
            objSQLConn.Close();
            objSQLConn.Open();
            dr = sqlCommand2.ExecuteReader();

            while (dr.Read())
            {
                newIdConfig = Convert.ToInt32(dr.GetValue(0).ToString());
            }

            //SqlConnection sqlConnection1 = new SqlConnection("Integrated Security=SSPI;data source=SERVERNAME;initial catalog=pubs;persist security info=True;");
           // SqlConnection1.Open();
            objSQLConn.Close();
           
            SqlCommand sqlCommand3 = new SqlCommand();
            SqlDataReader sqlDataRdr;
 
            sqlCommand3.CommandText = "dbo.Generate2";
            sqlCommand3.CommandType = CommandType.StoredProcedure;
            sqlCommand3.Connection = objSQLConn;

            sqlCommand3.Parameters.Add(new SqlParameter("@num",SqlDbType.NVarChar,5));
            sqlCommand3.Parameters["@num"].Direction = ParameterDirection.Output;

            objSQLConn.Open();
            sqlDataRdr = sqlCommand3.ExecuteReader();

--------------------
Найпопулярніші оголошення здесь - Безкоштовні оголошення
PM MAIL   Вверх
thomas
Дата 18.2.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



neomax, 
В принципе открывать и закрывать соединение это нормально.
Дрегое дело каждый раз создавать новое соединение вот это
Цитата

не рационально



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
informatik
Дата 18.2.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 1
Всего: 6



Ну так то это нормально только вот, если этот код выполняется по порядку, то зачем вызывать команды несколко раз, можно открыть соединение один раз, а в конце кода закрыть его.
--------------------
namespace informatik
PM MAIL   Вверх
akizelokro
Дата 19.2.2008, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



Насколько я могу неперавильно понять, ты сначала вставляешь строку в таблицу, затем пытаешься получить id вставленной строки (судя ORDER BY id_conf DESC)?  Если это действительно так, то это делается как раз в одной встроенной процедуре. 
По поводу объединения ее с твоей уже существующей, то это надо смотреть конкретно. 


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
tol05
Дата 19.2.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



Цитата(neomax @  18.2.2008,  14:52 Найти цитируемый пост)
У меня есть код с несколькими SqlCommand - ми , надо откривать и закръвать конекцию. По-моему ето не рационально, как можно объеденить все запросъ  в одной конекции к БД?

ИМХО лучше написать 1-2 хранимые процедуры на сервере. И вызывать их. Это будет со всех сторон лучше, быстрее и надежнее.

И еще непонятно вот что... sqlCommand1 - это инсерт? Тогда почему эта команда вызывается через ExecuteReader() ?


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.