Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизПосоветуйте чем лучше состыковывать Delphi 7 и MSSQL Найти похожие ветки
← →
Max Zyuzin © (2005-02-11 16:07) [0]Приветствую, Всех!
Возникла такая необходимость вот. Хотел бы поинтересоваться, кто, чем для этого пользуется, какими в смысле компонентами (писать самому - не предлагать :-) ).
Желательно что бы была внятная поддержка транзакций, хранимых процедур и пр. вкусности вот.
← →
Ega23 © (2005-02-11 16:48) [1]ADO
← →
Fay © (2005-02-11 17:03) [2]>> что бы была внятная поддержка транзакций
Вас не затруднит развернуть это понятие подробнее?
← →
Max Zyuzin © (2005-02-11 17:18) [3]>Fay © (11.02.05 17:03) [2]
Не затруднит, вот возьмем к примеру ib компоненты :) Явно есть IBTransaction, и работать с ним мона явно IBTransaction.Commit... и т.д. и т.п. Хочется что то подобное что бы мене самому была возможность явно их стартовать и заканчивать, а не неявно. Вот такой сумбур в обчем, я с ADO например не работал вовсе и не представляю пока как там это реализовано. Хотелось бы что бы в рамках одной транзакции можно было кучу запросов организовать.
← →
Max Zyuzin © (2005-02-11 17:21) [4]>Ega23 © (11.02.05 16:48) [1]
Почему ADO?
← →
stakan © (2005-02-11 17:24) [5]Есть такие компоненты SQLDirect,
работают с любым SQL сервером
← →
ЮЮ © (2005-02-14 03:59) [6]>Явно есть IBTransaction, и работать с ним мона явно IBTransaction.Commit... и т.д. и т.п.
TADOConnection.[Begin|Commit}Roallback]Trans
← →
sniknik © (2005-02-14 08:36) [7]> Почему ADO?
ADO это "родная" разработка мелкософта специально для MSSQL разрабатывалась.
> Есть такие компоненты SQLDirect,
в случае с MSSQL наверняка будет через то же ADO (вернее OLEDB драйвер который в ADO непосредственно используется), проверял пару "прямых" компонент, там было именно так. (возможно один из них и был SQLDirect), т.что "прямизна" таких компонент в случае с MSSQL под вопросом.
> TADOConnection.[Begin|Commit}Roallback]Trans
было на форуме такая работа вызывала какието проблемы (не скажу точно какие, не помню).
в то же время постоянно делаю транзакции через запросы на сервере, проблем ни разу не было.
ADOCommand.CommandText:= "BEGIN TRANSACTION"; и тд.
← →
Max Zyuzin © (2005-02-14 10:41) [8]Поковырялся немного в ADO и сразу налетел на грабли - При попытке ExecSQL у ADOQuery - "[Microsoft][ODBC SQL Server Driver] Optional feature not implemented"
Порылся в инете и я так понял что это потому что у меня один из передаваемых параметров у меня типа TDateTime... как это вылечить?
← →
Johnmen © (2005-02-14 10:54) [9]>Max Zyuzin © (14.02.05 10:41) [8]
Код давай :)
← →
Max Zyuzin © (2005-02-14 11:06) [10]>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;
← →
sniknik © (2005-02-14 11:14) [11]> ODBC SQL Server Driver
лучше не использовать, у него свои ограничения, по сравнению с самим MSSQL сервером. (типы параметров может не понимать)
используй не ODBC а OLEDB провайдера.
> Вот тут я правильно сделал или мудрю?
нормально, если есть закрывающая (не видно), но если это делается для одной команды то транзакция бессмысленна (будет автоматическая и без этого).
← →
Max Zyuzin © (2005-02-14 11:25) [12]>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;
← →
Max Zyuzin © (2005-02-14 11:46) [13]>sniknik © (14.02.05 11:14) [11]
Поменял драйвер усе заработало, сенкс. Может быть кинешь ссылку на работу с ADO где все хорошо расписано... (хелп я и та почитаю :))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c