Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1108117375
AlexandrKu
2005-02-11 13:22
2005.03.13
Запрос на выборку


1-1109243441
Kostik__
2005-02-24 14:10
2005.03.13
INI-файлы


1-1109334745
andr484
2005-02-25 15:32
2005.03.13
Проблема с функцией из DLL


8-1100687392
Viktop
2004-11-17 13:29
2005.03.13
Как повернуть изображение


9-1103044828
FRick
2004-12-14 20:20
2005.03.13
Игровое меню!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский