Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как грамотнее открывать/закрывать соединение с базой [MSSQL]


Страницы:   1 2

Ольга ©   (2005-08-07 09:24:00) 

В программе есть TreeView, на каждый click идет запрос к базе.
Открываю ADOConnection на FormCreate, закрываю на FormClose.
А не правильнее ли открывать/закрывать соединение на каждый click? Ведь пользователь может открыть форму и пойти пить чай - зачем держать соединение открытым. С другой стороны, а если не пойдет пить чай - зачем дергаться на каждый click?


Ольга   (2005-08-07 11:10:00) [21]

Нет, это отупение после месяца работы по 12 часов в день без выходных.
Спасибо.


msguns   (2005-08-07 11:07:00) [22]

>Ольга   (07.08.05 11:03) [3]
>ADOConnection1.Open;
ADOConnection2:=ADOConnection1; - при этом реально будут два соединения с базой или одно

Если надо создать второй экземпляробъекта с такими же свойствами, то используют Assign
Это прикол что ль ?


Ольга   (2005-08-07 11:03:00) [23]

Речь идет только о чтении данных, но данные должны быть всегда свежими, поэтому одним махом читать нельзя.
Мой пользователь - диспетчер, потому программа должна быть отказоустойчива. Если во время бездействия программы произошел разрыв соединения, пользователь не должен это заметить.

И еще один вопрос до кучи (что-то я сегодня вся в сомнениях):

ADOConnection1, ADOConnection2: TADOConnection;

ADOConnection1:=TADOConnection.Create(nil);
ADOConnection2:=TADOConnection.Create(nil);
...
ADOConnection1.Open;
ADOConnection2:=ADOConnection1;- при этом реально будут два соединения с базой или одно?


msguns   (2005-08-07 10:43:00) [24]

Кстати, если речь идет о "деревянном" справочнике, то, если записей в нем не слишком много (скажем, до 10.000), не проще ли закачивать его "одним махом", при этом не дергая сервак при перемениях-разворачиваниях по узлам дерева ? И повесить кнопульку "Перечитать".


msguns   (2005-08-07 10:41:00) [25]

Смотря что "висит" на соединении. Если читающая транзакция, то нехай себе "висит" до второго пришествия, серверу не внапряг. Переконнетиваться "по каждому клику" - задавать серверу хоть и не слишком большую, но постоянную работу, "заморачивать" его по мелочам.
Если же "висячка" на апдейтах, то это, ИМХО, от наличия кривизны рук и отсутствия царя в голове. Т.е. изменилась запись (юзер вызвал соотв.экшн) - прошла транзакция на запись в БД, закоммитилась и НД перечитан. Сервер "перекуривает". При этом есть ли еще вагоны для разгрузки-погрузки и сколько их (т.е.соединение не закрыто) - его, по большому счету, не колышит.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо