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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение к базе данных, держать ли соединение открытым 
V
    Опции темы
ДобренькийПапаша
Дата 14.6.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Такой вопрос. Есть клиент, и база  студентов, к которой он обращается. Я не использую в клиенте DataSet.

Нужно коннект к базе держать всё время открытым? Или делается функция (устанавливающая соединение), которая вызывается как только пользователь совершил определённое действие (делая запрос к базе)?

Архитектурно, так сказать, подскажите как лучше работать с базами... (в каких случаях транзакциями пользоваться тоже очень интересует)... 


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Alfmaster
Дата 14.6.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Держать открытым соединения не стоит! Я обычно пишу пару функций(одна для query-запросов, одна для non-query запросов), которые коннектятся в базе, выполняют команду, и отключаются от базы! 

А транзакции нужно использовать в ситуациях, когда выполняется несколько действий, каждое из которых должно быть успешным. Если одно из них проваливается транзакция отменяет все остальные действия
PM MAIL   Вверх
jonie
Дата 15.6.2009, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата
Держать открытым соединения не стоит!

могу привести пример когда стоит. Например сервис расчета чего-то по данным базы в режиме "почти настоящий реалтайм". Кроме того, возможна оптимизация выполнения однотипных запросов.
Суть такая: у вас есть запрос select * from table where id=? and param=?
Вы делаете процедуру #___select_proc @id, @param, и она при первой компиляции попадет в кеш оптимизатора MSSQL. Далее вызываете её уже спокойно. Если закрыть соединение, то процедура пропадет (с решетки начинается имя, и это не ошибка).


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Conkistador
Дата 15.6.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(jonie @  15.6.2009,  07:25 Найти цитируемый пост)
могу привести пример когда стоит.

есть ряд примеров когда соединения с БД стоит держать открытыми постоянно, но в контексте обсуждаемого случая это не актуально. 
Если запросы к базе инициируются действиями пользователя то соединения закрывать стоит, кстати в этом случае начинает эффективно работать пул соединений.

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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