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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SqlConnection, как лучше использовать 
:(
    Опции темы
Fomaa
Дата 4.4.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как вы думаете как лучше будет:
   - создать один раз System.Data.SqlClient.SqlConnection и все время его использовать?
или
   - каждый раз создавать System.Data.SqlClient.SqlConnection

?
PM MAIL   Вверх
unicuum
Дата 5.4.2008, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Fomaa @  4.4.2008,  23:12 Найти цитируемый пост)
System.Data.SqlClient.SqlConnection

Один раз создаёшь этот объект и везде для этой базы данных его используешь. Когда надо соединение открываешь и закрываешь, хотя в некоторых случаях это делается само, контроль все равно необходим.


--------------------
user posted image
обычный день на винграде
PM   Вверх
mr.DUDA
Дата 5.4.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Золотое правило: держать соединение открытым только на время запроса(ов). Количество одновременно открытых соединений у всех СУБД ограничено.


--------------------
user posted image
PM MAIL WWW   Вверх
Fomaa
Дата 5.4.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А вот пример кода, где создается соединение

Код

public void getSQLScalarResult(string selectSQL)
        {
            System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(DB.connectionString);
            System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(selectSQL,connection);
            command.Connection.Open();

            System.Windows.Forms.MessageBox.Show(Convert.ToString(command.ExecuteScalar()));
        }



Обязательно вызывать connection.Close() или по завершению процедуры автоматически закроется соединение в сборщике мусора ????????
и как узнать сколько открытых соединений на данный момент?
PM MAIL   Вверх
mr.DUDA
Дата 5.4.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(Fomaa @  5.4.2008,  17:00 Найти цитируемый пост)
Обязательно вызывать connection.Close() или по завершению процедуры автоматически закроется соединение в сборщике мусора ????????

Обязательно. Можно using использовать для удобства.

Цитата(Fomaa @  5.4.2008,  17:00 Найти цитируемый пост)
и как узнать сколько открытых соединений на данный момент?

В SQL Manager-е есть окно с инфой по соединениям открытым в данный момент.


--------------------
user posted image
PM MAIL WWW   Вверх
unicuum
Дата 5.4.2008, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



[quote]
Метод Close используется для отката любых транзакций в состоянии ожи
PM   Вверх
akizelokro
Дата 7.4.2008, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


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

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



Иными словами,  "сервер не железный", открыл коннект - будь добр закрыть, когда его отработал. Это вопрос минимизации потребления ресурсов и правило хорошего тона в программировании. Если что-то заюзал, то после отработки закрой.
Сколько использовать соединений? Если ты не делаешь multi-threading, то одного тебе должно хватить (как правило). Если сервер БД поддерживает пулинг, то затраты на установку/закрытие соединения даже близко не критичны. Но это тема для отдельного разговора.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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