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

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

Посоветуйте чем лучше состыковывать Delphi 7 и MSSQL [D7, MSSQL]


Max Zyuzin ©   (2005-02-11 16:07:00) 

Приветствую, Всех!
Возникла такая необходимость вот. Хотел бы поинтересоваться, кто, чем для этого пользуется, какими в смысле компонентами (писать самому - не предлагать :-) ).
Желательно что бы была внятная поддержка транзакций, хранимых процедур и пр. вкусности вот.


Max Zyuzin   (2005-02-14 11:46:00) [1]

>sniknik ©   (14.02.05 11:14) [11]
Поменял драйвер усе заработало, сенкс. Может быть кинешь ссылку на работу с ADO где все хорошо расписано... (хелп я и та почитаю :))


Max Zyuzin   (2005-02-14 11:25:00) [2]

>sniknik ©   (14.02.05 11:14) [11]
Попробуе переделать алиас, ок..

Кусок по вставке делается в цикле и в конце стоит

try
DM.LogADOCommand.CommandText := 'commit transaction';
DM.LogADOCommand.Execute;
except
DM.LogADOCommand.CommandText := 'rollback transaction';
DM.LogADOCommand.Execute;
end;


sniknik   (2005-02-14 11:14:00) [3]

> ODBC SQL Server Driver
лучше не использовать, у него свои ограничения, по сравнению с самим MSSQL сервером. (типы параметров может не понимать)
используй не ODBC а OLEDB провайдера.

> Вот тут я правильно сделал или мудрю?
нормально, если есть закрывающая (не видно), но если это делается для одной команды то транзакция бессмысленна (будет автоматическая и без этого).


Max Zyuzin   (2005-02-14 11:06:00) [4]

>Johnmen ©   (14.02.05 10:54) [9]
Даю, Жень :)

ADOQuery.SQL =

insert into ATSLog
(CallTime, Duration, Dialer, NumDialed)
values
(:pCallTime, :pDuration, :pDialer, :pNumDialed)

У параметра pCallTime автоматом проставилсось DateType "ftDateTime"

Вызов из программы :

DM.LogUpdADOConnection.Connected := True;
DM.LogADOCommand.CommandText := 'begin transaction';
DM.LogADOCommand.Execute; //??? Вот тут я правильно сделал или мудрю?
DM.LogUpdADOQuery.Prepared := True;

..........

DM.LogUpdADOQuery.Parameters[0].Value := TempLogStr.CallTime;
DM.LogUpdADOQuery.Parameters[1].Value := TempLogStr.Duration;
DM.LogUpdADOQuery.Parameters[2].Value := TempLogStr.Dialer;
DM.LogUpdADOQuery.Parameters[3].Value := TempLogStr.NumDialed;
DM.LogUpdADOQuery.ExecSQL;


Johnmen   (2005-02-14 10:54:00) [5]

>Max Zyuzin ©   (14.02.05 10:41) [8]

Код давай :)


Max Zyuzin   (2005-02-14 10:41:00) [6]

Поковырялся немного в ADO и сразу налетел на грабли - При попытке ExecSQL у ADOQuery - "[Microsoft][ODBC SQL Server Driver] Optional feature not implemented"
Порылся в инете и я так понял что это потому что у меня один из передаваемых параметров у меня типа TDateTime... как это вылечить?


sniknik   (2005-02-14 08:36:00) [7]

> Почему ADO?
ADO это "родная" разработка мелкософта специально для MSSQL разрабатывалась.

> Есть такие компоненты SQLDirect,
в случае с MSSQL наверняка будет через то же ADO (вернее OLEDB драйвер который в ADO непосредственно используется), проверял пару "прямых" компонент, там было именно так. (возможно один из них и был SQLDirect), т.что "прямизна" таких компонент в случае с MSSQL под вопросом.

> TADOConnection.[Begin|Commit}Roallback]Trans
было на форуме такая работа вызывала какието проблемы (не скажу точно какие, не помню).
в то же время постоянно делаю транзакции через запросы на сервере, проблем ни разу не было.
ADOCommand.CommandText:= 'BEGIN TRANSACTION'; и тд.


ЮЮ   (2005-02-14 03:59:00) [8]

>Явно есть IBTransaction, и работать с ним мона явно IBTransaction.Commit... и т.д. и т.п.

TADOConnection.[Begin|Commit}Roallback]Trans


stakan   (2005-02-11 17:24:00) [9]

Есть такие компоненты SQLDirect,
работают с любым SQL сервером


Max Zyuzin   (2005-02-11 17:21:00) [10]

>Ega23 ©   (11.02.05 16:48) [1]
Почему ADO?


Max Zyuzin   (2005-02-11 17:18:00) [11]

>Fay ©   (11.02.05 17:03) [2]
Не затруднит, вот возьмем к примеру ib компоненты :) Явно есть IBTransaction, и работать с ним мона явно IBTransaction.Commit... и т.д. и т.п. Хочется что то подобное что бы мене самому была возможность явно их стартовать и заканчивать, а не неявно. Вот такой сумбур в обчем, я с ADO например не работал вовсе и не представляю пока как там это реализовано. Хотелось бы что бы в рамках одной транзакции можно было кучу запросов организовать.


Fay   (2005-02-11 17:03:00) [12]

>> что бы была внятная поддержка транзакций
Вас не затруднит развернуть это понятие подробнее?


Ega23   (2005-02-11 16:48:00) [13]

ADO


Наверх

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