Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Посоветуйте чем лучше состыковывать 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.034 c
1-1109233490
TankMan
2005-02-24 11:24
2005.03.13
Можно ли скомпилировать проект без установленного дельфи?


14-1108545397
McSimm
2005-02-16 12:16
2005.03.13
Клиентописателям. Просьба зайти сюда на минутку.


9-1103448218
Goldseeker
2004-12-19 12:23
2005.03.13
Классы?


3-1107971746
frEE)stylEr
2005-02-09 20:55
2005.03.13
проблема с DBGrid


1-1109318590
vitge
2005-02-25 11:03
2005.03.13
Дизайн компонентов