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

نام تاپیک: رفع خطا برای فیلدتکراری(فیلدکلید)

  1. #1

    Question رفع خطا برای فیلدتکراری(فیلدکلید)

    سلام.
    وقتی دیتابیس رو با سی شارپ ارتباط بدیم اگه تو دیتابیس فیلدکلیدی وجود داشته باشه،طبیعتا اگرموقع افزودن داده هامون تو برنامه ای که در سی شارپ نوشتیم، مقداراون فیلد رو تکرار بدیم یه خطای خوشگل میاره!
    مثلا کد دانشجویی کلید باشه و توی فرم ،تکراری بدیم خطا میاره!
    من چه جوری به این بگم که اگه تکراری بود فقط یه msgboxنشون بده!
    راستی insert رو هم باprocedureدر sqlنوشتم!
    اگر عنوان مناسب نیس معذرت میخوام

  2. #2
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    همین نزدیکیها
    پست
    683

    نقل قول: رفع خطا برای فیلدتکراری(فیلدکلید)

    باید قبل از اینکه از Insert استفاده کنی باید یک پروسیجر توی sql بنویسی که یک مقدار مثلا شماره دانشجویی رو بگیره و بعد بگرده توی بانک و اگر بود مثلا false و اگر نبود True رو برگردونه

    بعد قبل از insert چک میکنی خروجی این پروسیجر اگر True بود اون وقت بگی که Insert رو اجرا کن

    نحوه برگردوندن True ,false توی sql با دستور Return هست
    چک کردن رکورد موجود هم

    decleare @ted int

    set @ted = select Count(*) from person where code=@code
    if @ted > 0
    return 0

    retutn 1

  3. #3

    نقل قول: رفع خطا برای فیلدتکراری(فیلدکلید)

    گرفتم.
    فقط این تیکه رو میشه بگین با چه دستوری بگم تو
    procedure
    بعد بگرده توی بانک و اگر بود مثلا false و اگر نبود True رو برگردونه
    ??

  4. #4
    کاربر دائمی آواتار returnx
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    ?
    پست
    1,190

    نقل قول: رفع خطا برای فیلدتکراری(فیلدکلید)

    در صورتی که تکراری باشه بصورت طبعی خطا تولید میشه و شما باید خطا رو مدیریت کنید برای این کار هم میتونید از کلاس
    Sqlexpection
    استفاده کنید به این صورت :
    try
    {
    //Insert Code
    }
    catch(Sqlexpection ex)
    {
    if (ex.Number ==2627)
    {
    //MessageBox
    }
    }

  5. #5
    کاربر دائمی آواتار morteza271
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    مشهد
    پست
    1,723

    نقل قول: رفع خطا برای فیلدتکراری(فیلدکلید)

    یه روش دیگه هم اینه که میتونید انجام بدین.
    البته شبیه روش دستمون هست ولی به نظرم بهتره :
    توی همون پروسیجری که insert می کنید اولش چک کنید اگه شماره داشنجویی هست که مثلا -1 برگردونه و اگه وجود نداره عمل درج رو انجام بده و یه عدد دیگه برگردونه.
    بعد از اجرای پروسیجر چک می کنید که اگر عدد برگردانده شده -1 بود خطای مناسب رو نمایش می دین.

    کدی که عمل چک کردن رو انجام میده رو میتونید به صورت زیر بنویسید:
    if exists (select ID From TableName Where ID=@ID)
    return -1;
    else
    // insert
    return 1;

    که @ID هم یک پارامتر هست (در مثال شما شماره دانشجویی مورد نظر)
    موفق باشید

  6. #6

    نقل قول: رفع خطا برای فیلدتکراری(فیلدکلید)

    بسیار ممنووونم.
    یه چیزی بگم؟من به procedureای که قبلا نوشته بودم دست نزدم اصلا شرط نذاشتم اونجا.اومدم تو برنامهtry/catch نوشتم جواب داد

  7. #7
    کاربر دائمی آواتار returnx
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    ?
    پست
    1,190

    نقل قول: رفع خطا برای فیلدتکراری(فیلدکلید)

    بسیار ممنووونم.
    یه چیزی بگم؟من به procedureای که قبلا نوشته بودم دست نزدم اصلا شرط نذاشتم اونجا.اومدم تو برنامهtry/catch نوشتم جواب داد
    درستش همینه ، اگه قرار باشه شما کل رکورد ها رو پیمایش کنید تا ببینید که رکوردی ثبت شده یا نه ، پس SQLServer اینجا چی کار قرار انجام بده!؟
    این وظایف به عهده ی بانک اطلاعاتی است نه برنامه نویس...

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

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