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

نام تاپیک: مدیریت پیغام های خطا در sql server یا ado

  1. #1

    مدیریت پیغام های خطا در sql server یا ado

    با سلام
    چندی پیش پستی را به سایت با همین عنوان ارسال کردم و راهکار خوبی از طرف کاربران عزیز دریافت نکردم اما پس از چندی به روشی دست یافتم که با همه نقاط ضعف آن ذکر آن را خالی از لطف نمیبینم:
    ما توسط یک شیء ADOTable به یک جدول متصل شده ایم و این جدول حد اقل دارای یک کلید اصلی میباشد یکی از خطاهای متداول در جداول بانک اطلاعاتی خالی گذاشتن مقدار فیلد کلید اصلی است (از قواعد جامعیت بانک) که مثال ذکر شده در پست من نیز این پیغام را مدیریت میکند مهمترین کاری که در این روال ما انجام میدهیم این است که در هنگام بروز خطا تشخیص دهیم نوع این خطا چیست و این را با استفاده از متن پیغام خطا به دست میاوریم سپس به سلیقه خود متن پیغام را تغییر میدهیم و از این پس در صورت بروز آن خطا پیعام ما دیده خواهد شد توجه داشته باشید که توسط بعضی از دوستان روشهایی از قبیل try و exception پیشنهاد میشود، به نظر من این روشها هر چقدر هم که کارا باشند ولی ما با استفاده از آنها بخشی از امکانات سیستمهای مدیریت بانک اطلاعاتی (ِِِِّDBMS) را نادیده گرفته ایم و راه خود را دشوارتر کرده ایم ، حال آنکه خود این سیستمها (که SQL Server نیز یکی از آنهاست) به شکلی قوی این مسائل را مدیریت میکنند و ما باید فقط بتوانیم از این ابزارها استفاده کنیم روش کار به این صورت است:
    (فرض بر این است که خواننده این سطور با ایجاد یک برنامه ساده کاربردی بانکی توسط نرم افزار دلفی و و اشیاء ADO آشنایی دارد)
    1- فرض میکنیم بانک اطلاعاتی را مثلاٌ در SQL Server ساخته ایم و یک جدول هم داریم که حتماٌ کلید اصلی دارد
    2- در یکی از فرم های دلفی توسط اشیاء ADO به بانک اطلاعاتی متصل شده ایم و سایر تشکیلات مانند ADOTable و DataSourse و DbGreed هم موجود هستند
    3- آنچه که ما با آن کار داریم رویداد OnPostError مربوط به شیء ADOTable میباشد
    4- کد زیر را در رویداد مذکور بنویسید:
    if copy(e.Message,1,24)='Violation of PRIMARY KEY' then
    e.message:='shomare tekrari ast';
    if copy(e.Message,1,28)='Cannot insert the value NULL' then
    e.Message:='shomare nemitavanad khali bashad' ;
    پس از کامایل برنامه اگر فایل اجرایی آن را در محیط ویندوز اجرا نمایید پیغام خود را در صورت بروز خطا خواهید دید البته اجرای چنین برنامه ای از محیط خود دلفی منجر به قطع اجرا و صدور پیامهای دیگری خواهد شد که مسلماٌ اجرا نوع اول هدف اصلی ماست این را هم اضافه کنم که به دلیل مشکلات انواع ویندوزهای فارسی متن خطاها را به صورت فینگلیش نوشته ام.
    البته این قطعه کد مشکل کوچکی هم دارد(شاید هم از دیدگاه نکته بینان مشگل بزرگی باشد) و آن هم این است که اگر به جای شناخت متن خطا با کد آنها کار کنیم منطقی تر باشد نگارنده این مطلب را نتوانسته است پیدا کند و عزیزانی که در این مورد آموخته هایی دارند با نظرهای تکمیلی و بهتر خود در این زمینه راهگشا خواهند بود متشکرم

  2. #2
    دوست عزیزم،
    اگر اصولی بخواهید به این مطلب نگاه کنید، ویرایش پیغامهای خود SQL Server توصیه نمیشه.
    هر خطا در SQL Server چهار قسمت داره:
    1) Error Number
    2) Error Message
    3) Severity Level
    4) State

    که دو مورد اول مورد نیاز ماست. وقتی شما یک فیلد رو PK قرار میدین، میتونین نام Constraint رو به دلخواه تعیین کنین. وقتی مقدار تکراری وارد PK بشه، SQL Server نام Constraint رو در Error Message به شما برمیگردونه. لذا با داشتن کد خطا و نام Constraint، دقیقا متوجه نوع خطا خواهید شد و پیغام مناسب رو به کاربر نمایش میدین.

تاپیک های مشابه

  1. تفاوت Response.Redirect با Server.Transfer و Server.Execute
    نوشته شده توسط odiseh در بخش Classic ASP
    پاسخ: 2
    آخرین پست: یک شنبه 18 بهمن 1388, 20:13 عصر
  2. Link Server & Import Data In SQL Server 2000
    نوشته شده توسط A.Farzin در بخش SQL Server
    پاسخ: 3
    آخرین پست: شنبه 01 دی 1386, 13:53 عصر
  3. طای HTTP/1.1 500 Server Error Server: Microsoft-IIS/5.1 Date...
    نوشته شده توسط nak303 در بخش PHP
    پاسخ: 0
    آخرین پست: سه شنبه 25 بهمن 1384, 10:02 صبح
  4. پیغام خطا پس از نصبSQL Server 2000 روی Windows Server 2003
    نوشته شده توسط ravanfar در بخش SQL Server
    پاسخ: 1
    آخرین پست: پنج شنبه 03 دی 1383, 23:41 عصر

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

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