نمایش نتایج 1 تا 7 از 7

نام تاپیک: استفاده صحیح از تراکنش در ADO چگونه است

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1384
    محل زندگی
    مشهد مقدس
    پست
    89

    Lightbulb استفاده صحیح از تراکنش در ADO چگونه است

    با عرض سلام و احترام به دوستان خوب برنامه نویس
    من برای استفاده از شیوه صحیح تراکنش احتیاج به راهنمایی دارم
    برنامه مورد نظر بر روی شبکه باید اجرا شود بانکهای اطلاعاتی Sql هستند و من از کدهای زیر استفاده کرده ام

    ADOConnection1.BeginTrans;
    try
    ADOQuery1.Append; یا ADOQuery1.Edit
    ....
    ADOQuery1.Post;
    Except
    ADOConnection1.RollbackTrans;
    Exit;
    end;
    ADOConnection1.CommitTrans;

    اصلا آیا استفاده از ADOQuery برای این تراکنش درست است یا باید برای این مورد از ADOTable استفاده کنم و یا اگر هردو اشتباه است روش صحیح کدام است.
    سئوال دیگر اینکه در بعضی از قسمتها بعد از بروز اشکال و اجرای ADOConnection1.RollbackTrans باز هم اطلاعات جدید یا ویرایش شده در بانک اطلاعاتی ذخیره میشود. علت چیست ؟ چرا Transaction به درستی عمل نمی کند. آیا این امکان وجود دارد که به علت استفاده از Try /Except دیگری قبل از این قسمت برنامه با این اشکال روبرو شود یا مشکل از کدنویسی همین قسمت است.
    اصلا چه زمانی اطلاعات به سرور ارسال میشوند وقتی Post انجام شد یا وقتی که ADOConnection1.CommitTrans اجرا شود.

    لطفا نگویید که جستجو کنید چون جستجو کردم ولی به جواب مورد نظرم نرسیدم و با جوابهای متناقض روبرو شدم
    مثلا در تاریخ
    Thursday 06 January 2005, 08:55 AM آقا یا خانم YASNA
    برای استفاده از transaction در ADOCONNECTION این طور عنوان کرده بودندکه
    <<اگر برنامه شما قرار است در شبکه کار کند بهتر است از این دستور استفاده نکنید>>
    ولی در تاریخ Friday 04 November 2005, 12:27 AM آقای کشاورز در مورد Transaction A و Transaction B توضیحاتی داده اند که البته باز هم من به جوابم نرسیدم

    لصفا مرا راهنمایی کنید فکر کنم در این زمینه من اصلا توی باغ نیستم.
    آخرین ویرایش به وسیله بهمن بهار : چهارشنبه 07 دی 1384 در 06:35 صبح

  2. #2
    اصلا آیا استفاده از ADOQuery برای این تراکنش درست است یا باید برای این مورد از ADOTable استفاده کنم و یا اگر هردو اشتباه است روش صحیح کدام است.
    در این مورد فرق چندانی با هم نمی کنند.

    اصلا چه زمانی اطلاعات به سرور ارسال میشوند وقتی Post انجام شد یا وقتی که ADOConnection1.CommitTrans اجرا شود.
    بستگی داره که از چه LockType ایی استفاده می کنید، اگه از ltBatchOptimistic استفاده می کنید، اطلاعات زمانی برای سرور ارسال می شند که UpdateBatchفراخوانی شده باشه، در غیر اینصورت فراخوانی Post باعث ارسال تغییرات به سرور بانک اطلاعاتی میشه.
    تراکنش ها توسط سرور بانک اطلاعاتی کنترل میشند. با فراخوانی CommitTrans در واقع از SQL Server درخواست می کنید که تغییرات ایجاد شده در داخل تراکنش را اعمال کنه. بعد از شروع یک تراکنش، تا زمانی که CommitTrans فراخوانی نشه، تغییری هم ثبت نمیشه.

  3. #3
    به نظر من اگر کدتون رو اینطور بنویسید بهتره

    ADOConnection1.BeginTrans;
    try
    ADOQuery1.Append; یا ADOQuery1.Edit
    ....
    ADOQuery1.Post;
    ADOConnection1.CommitTrans;
    Except
    ADOConnection1.RollbackTrans;
    Exit;
    end;
    You never know what you can do until you try

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1384
    محل زندگی
    مشهد مقدس
    پست
    89

    Lightbulb

    با عرض ادب و احترام به تمامی دوستان خوب برنامه نویس
    با تشکر از راهنمایی شما
    پس با این تفاسیر این روش برای شبکه ایرادی ندارد ؟ آیا درست میگویم.؟
    یک نکته میماند که تکلیف کاربرهای دیگر درهنگام ویرایش یا اضافه کردن چه میشود یعنی SQL چطور آنها را مدیریت میکند . یا مدیریت با برنامه نویس است.
    فقط هنوز به این مطلب پی نبردم که چرا گاهی اوقات ADOConnection1.RollbackTrans درست عمل نمیکند و بازهم تغییرات یا اطلاعات جدید در جدول اعمال میشود.
    آیا این امکان وجود دارد که به علت استفاده از Try /Except دیگری قبل از این قسمت برنامه با این اشکال روبرو شود یا مشکل از کدنویسی همین قسمت است.
    یک سئوال کوچولوی دیگر با عرض پوزش !
    در یک برنامه چون تعداد جدولها زیاد است من سعی کرده ام فقط از ADOQuery استفاده کنم (برای کمتر شدن حافظه اشغال شده توسط برنامه) آیا این روش درست است.و اگر در یک برنامه تعداد جداول زیادی وجود داشت برای اینکه حافظه اشغال شده توسط برنامه به حداقل برسد چه روشهایی را پیشنهاد میکنید.
    راستی 3 روز است که ترکیب شکل ظاهری سایت در سیستم من عوض شده. چون سیستم را فرمت کردم و دوباره ویندوز نصب کردم اینطوری شده یا برای همه این شکل و شمایل جدید آمده ؟


    با تشکر قبلی از همه دوستان خوب بخصوص آقای کشاورز که همیشه برای همه دلگرمی به ارمغان میآورد.

  5. #5
    تکلیف کاربرهای دیگر درهنگام ویرایش یا اضافه کردن چه میشود یعنی SQL چطور آنها را مدیریت میکند . یا مدیریت با برنامه نویس است.
    این مسئله با استفاده از خاصیت IsolationLevel از AdoConnection کنترل میشه. این خاصیت نحوه دسترسی سایر کاربران به اطلاعاتی که در حین تراکنش تغییر کرده اند را مشخص میکنه.

    چرا گاهی اوقات ADOConnection1.RollbackTrans درست عمل نمیکند و بازهم تغییرات یا اطلاعات جدید در جدول اعمال میشود.
    ممکنه مشکل از کدهایی باشه که شما نوشتید.

    و اگر در یک برنامه تعداد جداول زیادی وجود داشت برای اینکه حافظه اشغال شده توسط برنامه به حداقل برسد چه روشهایی را پیشنهاد میکنید.
    1- سعی کنید نتایج Query ها را محدود کنید، یعنی فقط رکوردها و فیلدهایی که برای کار خاصی نیاز دارید را درخواست کنید، نه اینکه برای هر کار کوچکی کل داده های جدول را درخواست کنید.
    2- جداولی را که لازم نیست همیشه باز باشند، را ببندید و فقط زمانی که به آنها نیاز دارید، آنها را باز کنید. البته برای جداولی که به دفعات باز و بسته می شوند، بهتره فقط یکبار اونها را باز کنید و تا پایان کار آنها را نبندید، چون زیاد باز/بسته کردن جداول هم خودش موجب اتلاف منابع سیستم میشه.

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1384
    محل زندگی
    مشهد مقدس
    پست
    89

    Question

    با عرض ادب و اجترام
    آقای کشاورز از راهنمایی های ارزنده شما بسیار متشکرم
    از شما خواهشی دارم اگر ایرادی ندارد لطفا مرا در این مورد هم راهنمایی کنید.
    حدود 10 روز پیش سئوالی در مورد کار با تجهیزات پراکسیم کرده بودم که مدیر سایت آنرا به انجمن
    شبکه ها انتقال داده ولی تاکنون کسی به آن جواب نداده اگر زحمتی نیست یه نگاهی بیندازید در صورت امکان مرا راهنمایی کنید.
    با تشکر قبلی
    بهمن بهار

  7. #7
    حدود 10 روز پیش سئوالی در مورد کار با تجهیزات پراکسیم کرده بودم که مدیر سایت آنرا به انجمن
    شبکه ها انتقال داده ولی تاکنون کسی به آن جواب نداده اگر زحمتی نیست یه نگاهی بیندازید در صورت امکان مرا راهنمایی کنید.
    متاسفانه بنده اطلاعی در این مورد ندارم؛ اینو باید دوستانی که اطلاعاتی از تجهیزات شبکه دارند جواب بدند.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •