![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AdoConnection [D5, MSSQL]
Mamed © (2004-06-03 11:24:00)U menya est AdoConnection.ya soedinen s SQL serverom.Iz za plocoy svyazi inogda connection teryaetsya .kak ya mogu uznat poteryan li soedineniye ili net
Johnmen (2004-06-03 17:33:00) [1]>Курдль © (03.06.04 17:14) [20]
Понятно. Для провайдеров для MSSQL такого параметра не существует...
Курдль (2004-06-03 17:14:00) [2]
> Johnmen © (03.06.04 14:25) [18]
> Для какого провайдера существует такой параметр ?
Это параметры строки подключения OleDbConnection от .NET к Sybase ASA 8. Вот полный вариант:
Protection Level=None;
Integrated Security=SSPI;
User ID=;
Password=;
Data Source=;
Provider="ASAProv.80";
Cache Authentication=False;
Persist Encrypted=True;
Impersonation Level=Identify;
Mask Password=False;
Persist Security Info=False;
Initial Catalog=;
Extended Properties=;
ASA Multiple Results=False;
Location=;
Encrypt Password=False"
jocko (2004-06-03 15:21:00) [3]я сделал примерно так так
кстати только в данном методе я показываю сообещения от сервера
все вызовы просто завернуты в try
procedure TdmMainConnection.cnnMainExecuteComplete(
Connection: TADOConnection; RecordsAffected: Integer; const Error: Error;
var EventStatus: TEventStatus; const Command: _Command;
const Recordset: _Recordset);
var cnnTemp : TADOConnection;
i : integer;
begin
if EventStatus = esErrorsOccured then
begin
if Error.Number = -2147217871 then //превышение времени ожидания
begin
ExmMessageDlg( Error.Description, mtError, [mbOK], 0);
//при превышенни времени ожидания откатвыаем все транзакции текущего процесса
//RollBackTransactions;
end
else begin
if Error.Number = -2147467259
then begin
ExmMessageDlg( 'Произошел обрыв соединения!', mtWarning, [mbOK], 0);
fConnected := False;
PostMessage(Application.MainForm.Handle, DM_CONNECTIONFAILED, 0, 0);
end
else ExmMessageDlg( Error.Description, mtError, [mbOK], 0);
end;
end;
end;
Johnmen (2004-06-03 14:25:00) [4]>Курдль © (03.06.04 14:03) [17]
Для какого провайдера существует такой параметр ?
Курдль (2004-06-03 14:03:00) [5]
> bushmen © (03.06.04 13:11) [15]
> К сожалению, это общая болезнь для некоторых продуктов Майкрософта.
>
>
> Johnmen © (03.06.04 13:15) [16]
> Это его фича.
Если установить в строке подключения"Cache Authentication=False", тоConnection.Closeзакрывает сессию, но только это.
Johnmen (2004-06-03 13:15:00) [6]>Курдль © (03.06.04 13:02) [13]
Это его фича.
bushmen (2004-06-03 13:11:00) [7]>метод Connection.Close вовсе не вызывает закрытия связи, а исчезает только после завершения приложения... :(
К сожалению, это общая болезнь для некоторых продуктов Майкрософта.
Johnmen (2004-06-03 13:09:00) [8]>Try except napisat na kaydom meste ne udobno.
Так тебе удобства нужны или чтобы программа не валилась ?
Если второе, то каждыйзапрос в try except.
Последняя строка в трай - MyConnectedFlag:=True;
В ексепте - MyConnectedFlag:=False;
Заводишь таймер и там анализируешь флаг...
Курдль (2004-06-03 13:02:00) [9]
> На самом деле не так уж и не предсказуемо. Майкрософт же
> говорил, что в ADO.NET применена технология отсоединенного
> рекордсета в отличии от ADO.
Датасэта, если уж на то пошло. Как раз его поведение - понятно абсолютно. Залил данные из адаптера и юзай. А вот Connection и вправду ведут себя странно. Согласно описанию они должны кэшироваться, перенаправляться в одну сессию, если активированы одним приложением и т.д. На самом деле они этого не делают (или я не могу добиться по незнанию). Более того, в каких-то случаях метод Connection.Close вовсе не вызывает закрытия связи, а исчезает только после завершения приложения... :(
bushmen (2004-06-03 12:57:00) [10]>но ADO.NET ведет себя вообще непредсказуемо
На самом деле не так уж и не предсказуемо. Майкрософт же говорил, что в ADO.NET применена технология отсоединенного рекордсета в отличии от ADO.
bushmen (2004-06-03 12:54:00) [11]>Try except napisat na kaydom meste ne udobno
Это только в сказках бывает, что поймаешь щуку, а она 3-и твоих желания исполнит! :)
Ты работаешь для кого - себя или пользователя?
Курдль (2004-06-03 12:52:00) [12]Не знаю, как ADO, но ADO.NET ведет себя вообще непредсказуемо. При разрыве контакта может долгое время делать вид, что ничего не случилось, принимать запросы, но не отвечать на них (т.е. ни данных, ни сообщений об ошибке), а тем временем лихоражочно пытаться приконнектиться снова.
Mamed (2004-06-03 12:48:00) [13]U menya programma napisano davno AdoQuery.Open est vo mnogix mestax.Try except napisat na kaydom meste ne udobno. Dopustim mne nado soobsit klientu o tom chto soedinenie poteryano.Kak eto mojno nayti
bushmen (2004-06-03 11:51:00) [14]>Mne nado Pri takoy osibke povtorit Soedineniye
Ну а кто тебе мешает воспользоваться конструкцией try except?
Mamed (2004-06-03 11:47:00) [15]Snachal U AdoConnenction e ustanovlivayu parmetri soedineniye Soedinyayus vse normalno.
Potom v raznix formax sozdayu AdoQuery Ixniy konnection ukazivayu na Adoconnection.Vit kogda v seti problema to poluchayu osibku Missing Connection Mne nado Pri takoy osibke povtorit Soedineniye
bushmen (2004-06-03 11:47:00) [16]>Delphi sam kak to naxodit est li soedineniye ili net
Ты слышал когда-нибудь о понятии "time out" ?
Johnmen (2004-06-03 11:41:00) [17]Какой такой kod vipolnyaesh ?
Mamed (2004-06-03 11:40:00) [18]Ved kogda kod vipolnyaesh Delphi sam kak to naxodit est li soedineniye ili net
bushmen (2004-06-03 11:38:00) [19]>etot variant v samoy posledniy ochered
Это почему?
Mamed (2004-06-03 11:36:00) [20]:) etot variant v samoy posledniy ochered