Один коннект на всю прогу
От: DemAS http://demas.me
Дата: 13.03.03 11:28
Оценка:
Не как не соображу как это лучше сделать. Сейчас сделано так: есть класс —

public class dbConn
{

   private OleDbConnection oConn;


При запуске программы создается экземпляр этого класса (переменная объявлена в главной форме), в конструкторе класса создается коннект к БД и устанавливается значение переменной oConn.

Есть куча форм работающих с базой данных, при их создании я им в конструктор передаю этот самый экземпляр dbConn.

Мне это кажется не очень удачным.

Как это реализовать правильнее. Необходимо, чтобы любая форма имела достум к этому экземпляру класса. Причем экземпляр этого класса всего один.

Подозреваю, что решение каким-то образом связано со static, но как не соображу.

Спасибо за помощь.
... <<Слушаю Joe Satriani — Lights Of Heaven >>
Re: Один коннект на всю прогу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.03.03 11:48
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS> Не как не соображу как это лучше сделать.


Лучше этого не делать
... << RSDN@Home 1.0 beta 6a >>
AVK Blog
Re[2]: Один коннект на всю прогу
От: DemAS http://demas.me
Дата: 13.03.03 12:03
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>Лучше этого не делать


Что не делать ?

Как я не делать ? Или вообще ЭТО не делать ? А как тогда ?

Краткость конечно искра таланту, но хотелось бы поподробнее
... <<Слушаю Joe Satriani — Ceremony >>
Re[3]: Один коннект на всю прогу
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.03 12:13
Оценка:
Здравствуйте, DemAS, Вы писали:

AVK>>Лучше этого не делать

DAS> Что не делать ?
DAS> Как я не делать ? Или вообще ЭТО не делать ? А как тогда ?
DAS> Краткость конечно искра таланту, но хотелось бы поподробнее

Сестра.

Не делать один коннект. Коннекты кешируются и скорость их создания и открытия очень высокая (на нее можно забить), а вот проблем от одного коннекта будет море. Это даже не коннект в старом АДО. Тут даже нельзя выполнить двух параллельных запросов.
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Один коннект на всю прогу
От: Renkin Россия  
Дата: 13.03.03 12:18
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Сестра.

VD>Не делать один коннект. Коннекты кешируются и скорость их создания и открытия очень высокая (на нее можно забить), а
вот проблем от одного коннекта будет море. Это даже не коннект в старом АДО. Тут даже нельзя выполнить двух параллельных запросов.

Т.е. есть главная форма, в ней создать строку подключения и во всех подчиненных формах создавать свой коннект используя эту строку соединения?
Re[4]: Один коннект на всю прогу
От: DemAS http://demas.me
Дата: 13.03.03 12:28
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Не делать один коннект. Коннекты кешируются и скорость их создания и открытия очень высокая (на нее можно забить)


Уверен ?

У меня в одном методе усатнавливается коннект к БД, а во втором с помощью установленного коннекта делается запрос к БД.
Первая процедура работает гораздо дольше второй

Еще. Как кэшируются коннекты ? Для каждого приложения или для ОС в целом ? Т.е. если я создал коннект, закрыл программу, запустил программу и пытаюсь снова установить коннект — он у меня возьмется из кэша или создастся заново ?
... <<Слушаю Joe Satriani — Ceremony >>
Re[5]: Один коннект на всю прогу
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.03.03 12:48
Оценка: 4 (1)
Здравствуйте, DemAS, Вы писали:

VD>>Не делать один коннект. Коннекты кешируются и скорость их создания и открытия очень высокая (на нее можно забить)


DAS> Уверен ?


Читайте доки, они рулез

DAS> У меня в одном методе усатнавливается коннект к БД, а во втором с помощью установленного коннекта делается запрос к БД.

DAS> Первая процедура работает гораздо дольше второй

Естественно. Первый то раз соединение нужно устанавливать в любом случае.

DAS> Еще. Как кэшируются коннекты ?


Не кешируются, а используется пулинг.

DAS>Для каждого приложения или для ОС в целом ?


Для каждого домена

DAS>Т.е. если я создал коннект, закрыл программу, запустил программу и пытаюсь снова установить коннект — он у меня возьмется из кэша или создастся заново ?


Создастся заново
... << RSDN@Home 1.0 beta 6a >>
AVK Blog
Re[6]: Re[6]: Один коннект на всю прогу
От: TK Лес кывт.рф
Дата: 13.03.03 13:28
Оценка:
Hello, "AndrewVK"

> DAS>Для каждого приложения или для ОС в целом ?

>
> Для каждого домена
>

Точно в этом уверен? Например для Odbc или OleDb провайдеров? Есть ссылки? Или это просто идея на тему, что так должно быть?

Например в некоторых случаях для COM+ компонент создается единый Object Pool для всех доменов приложения.
Posted via RSDN NNTP Server 1.4.6 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: Один коннект на всю прогу
От: Tom Россия http://www.RSDN.ru
Дата: 13.03.03 14:12
Оценка:
AVK>Для каждого домена
Можно пару вопросов?
А можно узнать на какое время.
Т.е через какой промежуток времени соединение разорвётся?
И в этом случае я понимаю, что между частями программы лучше передавать не конекшн а конекщнстринг?
... << RSDN@Home 1.0 beta 6a >>
Народная мудрось
всем все никому ничего(с).
Re[7]: Один коннект на всю прогу
От: IT Россия linq2db.com
Дата: 13.03.03 14:26
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>А можно узнать на какое время.

Tom>Т.е через какой промежуток времени соединение разорвётся?

А какая тебе разница? Создание объекта коннекции перед каждым запросом избавит тебя от подобных вопросов и, главное, от возможных проблем.

Tom>И в этом случае я понимаю, что между частями программы лучше передавать не конекшн а конекщнстринг?


Точно.
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Один коннект на всю прогу
От: Tom Россия http://www.RSDN.ru
Дата: 13.03.03 15:02
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Tom, Вы писали:


Tom>>А можно узнать на какое время.

Tom>>Т.е через какой промежуток времени соединение разорвётся?
IT>А какая тебе разница? Создание объекта коннекции перед каждым запросом избавит тебя от подобных вопросов и, главное, от возможных проблем.
ХОЧУ ВСЁ ЗНАТЬ Вероятно это где то настраивается.
... << RSDN@Home 1.0 beta 6a >>
Народная мудрось
всем все никому ничего(с).
Re[9]: Один коннект на всю прогу
От: IT Россия linq2db.com
Дата: 13.03.03 15:11
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>ХОЧУ ВСЁ ЗНАТЬ Вероятно это где то настраивается.


Что именно настраивается?
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Один коннект на всю прогу
От: Tom Россия http://www.RSDN.ru
Дата: 13.03.03 15:22
Оценка:
Tom>>ХОЧУ ВСЁ ЗНАТЬ Вероятно это где то настраивается.
IT>Что именно настраивается?
Максимальное время простоя соединения в пуле
... << RSDN@Home 1.0 beta 6a >>
Народная мудрось
всем все никому ничего(с).
Re[11]: Re[11]: Один коннект на всю прогу
От: TK Лес кывт.рф
Дата: 13.03.03 15:34
Оценка:
Hello, "Tom"

> Tom>>ХОЧУ ВСЁ ЗНАТЬ Вероятно это где то настраивается.

> IT>Что именно настраивается?
> Максимальное время простоя соединения в пуле
>

Что-то около минуты Естественно, что для каждого типа провайдера это будет разное время и настраиваться оно будет по своему.
Posted via RSDN NNTP Server 1.4.6 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[12]: Re[11]: Один коннект на всю прогу
От: Tom Россия http://www.RSDN.ru
Дата: 13.03.03 15:42
Оценка:
TK>Что-то около минуты
Надеюсь это шутка

TK>Естественно, что для каждого типа провайдера это будет разное время и настраиваться оно будет по своему.

Да понятно это. А при чём здесь провайдер если пул организует домен ? И вообще где бы почитать первоисточник ? Весь ADO.NET читать пока нет времени. Если есть куда пнуть буду признателен. Если нет, ну и бог с ними с конекщинами.
... << RSDN@Home 1.0 beta 6a >>
Народная мудрось
всем все никому ничего(с).
Re[5]: Один коннект на всю прогу
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.03 18:23
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS> Уверен ?


Уверен. Там пул подключений. По сравнению с запросом к БД обращение к пулу полная фигня.

DAS> У меня в одном методе усатнавливается коннект к БД, а во втором с помощью установленного коннекта делается запрос к БД.

DAS> Первая процедура работает гораздо дольше второй

Попробуй сделать подключение прямо в этой процедуре. Увидишь что на второй и далее раз скорость будет такая как будто подключения нет.

DAS> Еще. Как кэшируются коннекты ? Для каждого приложения или для ОС в целом ?


Какие нафиг ОС? Возми Анакрину и глянь сам. Там все приметивно до слез. Но работает вроде приемлемо.

DAS> Т.е. если я создал коннект, закрыл программу, запустил программу и пытаюсь снова установить коннект — он у меня возьмется из кэша или создастся заново ?


создастся заново
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Один коннект на всю прогу
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.03 18:23
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Естественно. Первый то раз соединение нужно устанавливать в любом случае.


Более того. Там нужно создавать пул, а это значит не одно соеденение, а несклько.

AVK>Не кешируются, а используется пулинг.


Привет тебе. А что по-твоему такое плу? Это и есть кэш.
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Re[11]: Один коннект на всю прогу
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.03 18:23
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Да понятно это. А при чём здесь провайдер если пул организует домен ? И вообще где бы почитать первоисточник ? Весь ADO.NET читать пока нет времени. Если есть куда пнуть буду признателен. Если нет, ну и бог с ними с конекщинами.


Пулинг захардкоден в провайдере. Читать исходники адо.нет. Правдо они довольно убогие.
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Один коннект на всю прогу
От: Andrey_N  
Дата: 13.03.03 22:11
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>>>ХОЧУ ВСЁ ЗНАТЬ Вероятно это где то настраивается.

IT>>Что именно настраивается?
Tom>Максимальное время простоя соединения в пуле

Для OBDC время жизни в пуле (для каждого драйвера, а не коннекции/DSN) настраивается через Control Panel. OLEDB такого средства не имеет, а пулинг включен по умолчанию на 60 сек (где-то я это встречал, но источника найти не могу).

Про пулинг в .NET есть статьи в MSDN, например про SQL Provider

И еще, если вы используете Connection.Dispose() (ну или пользуетесь using), а не просто Connection.Close(), то Connection убивается и в пуле тоже. Это было в книжке по ADO.NET, и я не помню относится ли это только к SQLConnection или к OLEDBConnection тоже.

Удачи
Андрей
Re[6]: Один коннект на всю прогу
От: DemAS http://demas.me
Дата: 14.03.03 06:01
Оценка:
Здравствуйте, VladD2, Вы писали:

Спасибо.

DAS>> Еще. Как кэшируются коннекты ? Для каждого приложения или для ОС в целом ?


VD>Какие нафиг ОС? Возми Анакрину и глянь сам. Там все приметивно до слез. Но работает вроде приемлемо.


Как человек, первую неделю пробующий .Net, я считаю, что мне еще слишком рано брать Анакрину
... <<Слушаю Portishead — Sour Times >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.