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

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

Научите меня быть умным! (.NET) Отсоединенное соединение. [D1]


Страницы:   1 2

Курдль ©   (2004-06-04 09:20:00) 

...или отключенное подключение :)
На самом деле вопрос очень важный! Ведь при переходе на Delphi 8 и технологию .NET возникает крушение стереотипов!
Видимо придется проститься со старыми принципами подключения к БД. Например, как раньше, - открыть приложение, совершить типа DataBase.Connection.Open, поработать и в конце дня сделать DataBase.Connection.Close - непозволительная роскошь!
Вот и вопрос. Кто может поделиться материалами, ссылками, опытом по созданию проектов .NET в части касающейся работы с Connection-ами?


Delirium   (2004-06-04 15:16:00) [21]

Вы меня не понимаете я вижу, сама связка "DBGrid-DataSource-DataSet-DataBase", уже порочна. Нельзя превращать приложение в on-line редактор для БД. Так делают лишь для локальных DBF-таблиц, да и то редко. Использование ADO в том числе и старого, подразумевает толстого клиента, собственно для и этого и придуман 'ADODB.Recordset' - для возможности "отвязаться" от сервера.


Курдль   (2004-06-04 15:10:00) [22]


> а все ваши существующие win32-приложения постоянно держат
> коннект с базой?

А спрогнозируйте-ка поведение данных в связке DBGrid-DataSource-DataSet-DataBase, если кому-то из последних сделать close?


Delirium   (2004-06-04 15:05:00) [23]

"открыть приложение, совершить типа DataBase.Connection.Open, поработать и в конце дня сделать DataBase.Connection.Close - непозволительная роскошь!" - Гхм, а все ваши существующие win32-приложения постоянно держат коннект с базой? В таком случае настоятельно рекомендую поскорее "крушить стереотипы"! Ибо не правильно сие не только для .Net, но и для любой другой платформы.


Курдль   (2004-06-04 15:02:00) [24]


> и вам советую

И напрасно!

если есть код
begin
a := b;
end;
то зачем писать
begin
 begin
  a := b;
 end;
end;

?


Polevi   (2004-06-04 14:57:00) [25]

>по умолчанию открывает транзакцию неявно
не люблю я эти неявно.. по умолчанию
и вам советую


Курдль   (2004-06-04 14:03:00) [26]


> это откуда такой вывод последовал интересно

Да от того же верблюда, что и TQuery.ExecSQL:
cmd.ExecuteNonQuery();по умолчанию открывает транзакцию неявно, утверждает ее в случае успеха и откатывает по ошибке.


Polevi   (2004-06-04 13:37:00) [27]

>В данном случае, как раз, использование транзакции не оправдано.
это откуда такой вывод последовал интересно


Sergey_Masloff   (2004-06-04 13:36:00) [28]

Курдль ©   (04.06.04 10:52) [8]
>А отделять данные от их представления не так-то просто.
Да и часто не так-то нужно как это представляется в умных книжках ;-)


Курдль   (2004-06-04 10:52:00) [29]

В данном случае, как раз, использование транзакции не оправдано.

А отделять данные от их представления не так-то просто.
Ведь идеология делфей въелась намертво! :)


Polevi   (2004-06-04 10:27:00) [30]

по стилю .NET каждой форме желательно ..
причем тут формы вообще ? учись отделять данные от их представления
connection динамически создавай

public void UpdateData(String sql)
{
 SqlConnection conn=new SqlConnection(ConnString);
 try
   conn.Open();
   SqlTransaction tran=conn.BeginTransaction(IsolationLevel.Serializable);
   SqlCommand cmd=new SqlCommand();
   cmd.Connection=conn;
   cmd.Transaction=tran;
   cmd.CommandText=sql;
   cmd.ExecuteNonQuery();
   tran.Commit();
 catch
 {
   if(tran!=null)
     tran.RollBack();
 }
 finally
   conn.Close();
 end;
}

и посмотри DataAdapter


Курдль   (2004-06-04 10:19:00) [31]


> ZrenBy ©   (04.06.04 10:17) [5]
> >Курдль ©  
> Гы. Вспоминается спор о транзакциях :)

Да-да!  :)  Но это именно тот случай, когда бе них не обойтись.
Т.е. когда производится большое количество последовательных обновлений (задействовано несколько таблиц, процедур, срабатывали триггеры) и все это должно быть либо корректно утверждено, либо начисто откачено.


ZrenBy   (2004-06-04 10:17:00) [32]

>Курдль ©  

Гы. Вспоминается спор о транзакциях :)


Курдль   (2004-06-04 10:05:00) [33]


> Mike_Goblin ©   (04.06.04 09:53) [3]
> существует документация и примеры

Пожалуйста! Любую ссыдку - хоть на книжки, хоть по авторам!
А то вся литература весьма поверхностна и чаще всего повторяется!


> создали объект соединения, подключились, получили/отправили
> данные, отключились, убили объект.

Это, вроде как, понятно. Но дело в том, что иногда возникает сложная цепочка обновлений, вызываемая разными модулями (формами), но находящаяся внутри одной транзакции.
В то же время, по стилю .NET каждой форме желательно иметь по собственному Connection. Как в таком случае объять всё одной транзакцией?


Mike_Goblin   (2004-06-04 09:53:00) [34]

существует документация и примеры
PS все гораздо хуже
создали объект соединения, подключились, получили/отправили данные, отключились, убиди объект.


Курдль   (2004-06-04 09:49:00) [35]

А существуют ли рекомендации лучших собаководов типа "MS настоятельно советует делать так:..."
Мне надо по максимуму аргументировать!


Polevi   (2004-06-04 09:40:00) [36]

там все просто с коннекшнами

открыли
выбрали данные
закрыли

работаем с данными

открыли
запостили изменения
закрыли


Страницы:   1 2

Наверх

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