PDA

View Full Version : اطلاع از قطع ارتباط در AdoConnecttion



hadisalahi2
یک شنبه 25 بهمن 1394, 06:00 صبح
سلام به عزیزان دل

بچه ها من چطوری میتونم بفهمم ارتباطم با دیتابیس از طریق AdoConnection قطع شده?
در برنامه های لوکال مدت زمان کانکشن تایم رو زیاد میکردم
اما یک برنامه تحت دیتابیس اینترتی نوشتم که متاسفانه بعضی مواقع به دلیل کندی اینترنت یا مسایل دیگه ارتباط به ADO قطع میشه
چطوری میتونم چک کنم که ارتباط قطع شده تا یک پیام به کاربر بدم؟

یوسف زالی
یک شنبه 25 بهمن 1394, 08:45 صبح
سلام.
اگر منظورت اینه که رویداد داشته باشی، متاسفانه نداری و می تونی اون رو با پینگ به DBMS (مثلا یه دستور الکی مثل select 1 که optimize نمی خواد) در دوره های معینی با ترد چک کنی..
اما برای مثال در تراکنش هات می تونی با try - except قرار دادن بلوک ADO در قسمت except چک کنی ببینی کانکشن لاست ارور شماست یا نه، بعد بیای و کانکشن رو مجدد باز کنی و به یوزر بگی دوباره تلاش کنه یا این که خودت براش دوباره تلاش کنی..

hadisalahi2
یک شنبه 25 بهمن 1394, 14:36 عصر
اگر منظورت اینه که رویداد داشته باشی، متاسفانه نداری
آره منظورم همین بود
خودمم یک بار چک کردم دیدم نداشت اما گفتم شاید یه سولاخ سمبه ای داشته باشه :لبخند:



قسمت except چک کنی ببینی کانکشن لاست ارور شماست یا نه، بعد بیای و کانکشن رو مجدد باز کنی و به یوزر بگی دوباره تلاش کنه یا این که خودت براش دوباره تلاش کنی..

این ارور رو چطور تشخصی بدم؟

اگه یک تایمر بزارم واسه چک کردن چجوره؟
نخوام وارد مسایل ترد و این حرفا بشم

hamid-nic
دوشنبه 26 بهمن 1394, 02:46 صبح
آره منظورم همین بود
خودمم یک بار چک کردم دیدم نداشت اما گفتم شاید یه سولاخ سمبه ای داشته باشه :لبخند:


این ارور رو چطور تشخصی بدم؟

اگه یک تایمر بزارم واسه چک کردن چجوره؟
نخوام وارد مسایل ترد و این حرفا بشم


try
ADOConn.Connected := True;
except
on e: EADOError do
begin
MessageDlg('Error while connecting', mtError, [mbOK], 0);
Exit;
end;
یه همچین چیزی میخوایید آقا هادی فکر کنم .

اگر از firedac استفاده می کردید رویدادهای OnLost و OnError می تونست بهتون کمک کنه .

hamid-nic
دوشنبه 26 بهمن 1394, 02:51 صبح
البته یک سوال هم خودم داشتم توی این زمینه که اون رویدادهای بالا در مورد firedac من امتحان کردم به محض قطع شدن عکس العمل آنی نشون نمیده وقتی به یک نحوی بخوایید از connection استفاده کنید فراخوانی میشه . آیا همینطوره یا من اشتباه می کنم ؟

hadisalahi2
دوشنبه 26 بهمن 1394, 04:29 صبح
اگر از firedac استفاده می کردید رویدادهای OnLost و OnError می تونست بهتون کمک کنه .
چون برنامه رو قبلا نوشتم دیگه نمیتونم از firedac استفاده کنم وگرنه مسلما از ado بهتره

در مورد سوالت هم من با firedac کار نکردم ، اما حدس میزنم بالاخره باید یه درخواست به سمت سرور بره که معلوم بشه ارتباط قطع شده یا نه
حالا این رویدادها بعد اینکه درخواست رفت و مشخص شد ارتباط وجود نداره باید فراخوانی بشه

البته این حدسیه که من میزنم شاید اساتید بیشتر بدونند در این مورد
یا حق

hamid-nic
دوشنبه 26 بهمن 1394, 05:00 صبح
چون برنامه رو قبلا نوشتم دیگه نمیتونم از firedac استفاده کنم وگرنه مسلما از ado بهتره

در مورد سوالت هم من با firedac کار نکردم ، اما حدس میزنم بالاخره باید یه درخواست به سمت سرور بره که معلوم بشه ارتباط قطع شده یا نه
حالا این رویدادها بعد اینکه درخواست رفت و مشخص شد ارتباط وجود نداره باید فراخوانی بشه

البته این حدسیه که من میزنم شاید اساتید بیشتر بدونند در این مورد
یا حق

خوب اگر این اتفاق در لحظه رخ بده و عکس العمل نشون بده خیلی بهتره برای اقدامات بعدی .
به هر حال ممنونم .