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

نام تاپیک: کنترل خطاها و ارور ولیدیشن

  1. #1

    کنترل خطاها و ارور ولیدیشن

    سلام دوستان

    دوستان من قبلن از ریپازیتوری استفاده میکردم و متادیتا برای ولیدیشن ارور مسیجها.اما الان که از store procedure ها استفاده میکنم چطور میتونم ولیدیشن داشته باشم و همچنین خطاهای سیستمی که ممکنه رخ بدن.
    بطور مثال این یک متد من هست که نه ولیدیشنی داره و کنترلی بر روی خطا ها.:

         [HttpPost]
    public Boolean AddEmail(string Email )
    {
    db.AddEmail(Email);
    return true;
    }

  2. #2
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: کنترل خطاها و ارور ولیدیشن

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

    معرفی علائم عبارات با قاعده

    www.tahlildadeh.com/ArticleDetails/آموزش-عبارات-منظم-در-سی-شارپ



  3. #3

    نقل قول: کنترل خطاها و ارور ولیدیشن

    ممنون منظورم اینه که مثلا در sp بیام و اگر مقداری رو اد کردم مقدار یک رو برگردونم که در اکشن اینو چک کنم.در واقع try , catch رو میخام بدونم اینجا چطور پیاده سازی کنم یا modelstate رو؟

  4. #4
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: کنترل خطاها و ارور ولیدیشن

    نقل قول نوشته شده توسط sara_t مشاهده تاپیک
    ممنون منظورم اینه که مثلا در sp بیام و اگر مقداری رو اد کردم مقدار یک رو برگردونم که در اکشن اینو چک کنم.در واقع try , catch رو میخام بدونم اینجا چطور پیاده سازی کنم یا modelstate رو؟
    یعنی اینکه توی استرپروسیجر یک Insert انجام بشه ، اگه Insert به درستی انجام شد و رکورد درج شد عدد 1 مقدار برگشتی از استرپروسیجر باشه و در غیر این صورت یک عدد دیگه؟
    تا الان اینجور متوجه شدم که میخواید توی استرپروسیجر Try Catch بزارید. ( اگه این نبود دوباره مثالی بزنید تا بهتر متوجه شم)

    BEGIN TRY
    دستورات
    END TRY
    BEGIN CATCH
    دستورات بعد خطا
    END CATCH


    با توجه به جستجوها به این نتیجه رسیدم ، لطفا بررسی کنید و نتیجه رو بگید. تاحالا خودم استفاده نکردم.

  5. #5

    نقل قول: کنترل خطاها و ارور ولیدیشن

    AS
    BEGIN Try
    INSERT INTO [dbo].[Contacts]
    ([Subject]
    ,[Email]
    ,[FamilyName]
    ,[Messages])
    VALUES
    (@subject
    ,@email
    ,@familyname
    ,@messages)
    END TRY
    BEGIN CATCH
    return 0
    END CATCH



    من دستورات رو به این صورت نوشتم.در حالت Try که درست عمل میکنه.اما نمیدونم چطور حالت catch رو براش پیاده کنم که ببینم چه اتفاقی میفته

  6. #6
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: کنترل خطاها و ارور ولیدیشن

    سلام.
    با توجه به اینکه شما خواستید نحوه try catch رو توی sql ببینید من این کد رو قرار دادم.
    صفحه مثالی از try catch
    ببینید بهتر است داده هایی رو که قرار است توی بانک درج کنید رو قبل از ارسال به پروسیجر بررسی کنید و درصورت اطمینان به پروسیجر ارسال کنید.
    من دقیقا نمیدونم الان شما مشکلتون چی هست؟
    آیا مشکل شما validation و بررسی نوع و ساختار اطلاعات ورودی هست؟

    اگه مشکل validation هست که باید ساختار در کدنویسی بررسی بشه و چندین روش وجود داره.
    1 . استفاده از [RegularExpression("^[a-z]+$")]
    2 . استفاده از Regex (در واقع روش اول و دوم هم خانواده هستن و الگوههایی که بهشون معرفی میکنید همه یکی هستن که در تاپیک "معرفی برخی علائم عبارات با منظم" بیشتر علائم معرفی شدن و میتونید ازشون استفاده کنید)
    3 . بررسی اطلاعات بدون regex ( این روش به صورت دستی بررسی میکنید ک خیلی کار زمانبر و برای رشته ها توصیه نمشه )
    برای مثال : ورودی رو بررسی کنید که ببینید از -1 بزرگتر است یا از 21 کوچکتر است (برای درج نمره دانشجو )

    یا اینکه
    خطاهای که ممکنه موقع درج در بانک اطلاعاتی صورت بگیره و میخواید وقتی که دستور insert رو انجام دادید متوجه شید که درج موفق بوده یا نه؟
    اگه مشکل این است ، باید شماره identity رکورد درج شده رو در پروسیجر برگردونید.

    ** اگه داده هارو به خوبی و درست به پروسیجر بدید احتمال خطای بانک خیلی کمه ولی با این حال لینک زیر هم قرار میدم که از طریق try catch در sql استفاده کرده.
    https://blog.sqlauthority.com/2014/1...lues-in-table/

  7. #7

    نقل قول: کنترل خطاها و ارور ولیدیشن

    بله دقیقا میخام همین مواردی رو که شما گفتین پیاده سازی کنم.سمت کلاینت رو پیاده سازی کردم از طریق regular و از طریق modelstate چک میکنم اگر ولیدیشن سمت کلاینت کار نکرد ارور رو به سمت کاربر انتقال بده.
    الان میخام مطمین باشم که دیتا در دیتابیس ذخیره شده وبعد پیغام موفقیت امیز بودن رو ثبت کنم.
    به همین دلیل هم در try , catch از return 0 و return 1 استفاده کردم.میشد با یک if هم چک کنم.بنطرتون این روش اشتباه هست؟

  8. #8
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: کنترل خطاها و ارور ولیدیشن

    نمیشه گفت روش اشتباه هست. اگه مشکلتون حل شده گمون نکنم مشکلی داشته باشه، البته مطمعن نیستم. چون خودم شخصا از Try catch استفاده نکردم. ولی روش منطقیه! حالا من مطالب رو در این مورد میخونم. اگه دیدم مشکلی داره بهتون اطلاع میدم توی همین تاپیک.

  9. #9

    نقل قول: کنترل خطاها و ارور ولیدیشن

    ببینید یه روش دیگه سرچ زدم.فکر میکنم این روش برای کاری که من میخام مفیدتر باشه.

    BEGIN 
    INSERT INTO [dbo].[Contacts]
    ([Subject]
    ,[Email]
    ,[FamilyName]
    ,[Messages])
    VALUES
    (@subject
    ,@email
    ,@familyname
    ,@messages)
    DECLARE @check int = CASE WHEN @@ROWCOUNT = 0 THEN 1 ELSE 0 END
    return @check
    END


    در واقع همون چیزی که شما میگید. اگر به جدول اضافه شده مقدار یک و اگر نشده مقدار صفر.

  10. #10
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: کنترل خطاها و ارور ولیدیشن

    بله این روش هم خوبه.

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

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