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

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

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    Question بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    سلام دوستان

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

    یعنی فرض کنید ما میخواهیم به کاربر نمایش بدیم که رکوردی که داخل دیتابیس ثبت میکنه تکراریه.

    من اومدم برای اینکار یکی از ستون های اصلی رو که نمیخوام داده تکراری وارد کنه یونیک یا کلید اصلی کردم. و دستور زیر رو نوشتم :


      try                {
    connect.Close();
    connect.Open();
    SqlCommand CMD = new SqlCommand("insert into login1 Values(@username,@pass)", connect);


    CMD.Parameters.AddWithValue("@username", textBox6.Text);
    CMD.Parameters.AddWithValue("@pass", textBox4.Text);


    CMD.ExecuteNonQuery();
    connect.Close();




    MessageBox.Show("باموفقیت ذخیره شد");




    }catch
    {




    MessageBox.Show("نام کاربری وارد شده تکراری می باشد");
    }


    حال در قسمت catch اومدم پیغامی نوشتم که اگر خطا داد احتمال زیاد بخاطر اینه که نام کاربری تکراری وارد شده...ولی شاید در این حالت مثلا خطا به دلیل چیزهای دیگر باشه...چطوری در این جا واقعا مطمئن بشم که خطا به خاطر تکراری بودن هستش؟ چون این حالتی که نوشتم برای تمامی خطا ها پیام تکراری بودن میاد.

  2. #2

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    سلام


    try
    {
    //کدهای درج اطلاعات
    }
    catch (SqlException sqlException)
    {
    //میتونید استثناهای اسکیوال رو با کدشون هندل کنید
    if (sqlException.Number == 2601)
    MessageBox.Show(sqlException.Message);
    }
    catch (Exception exception)
    {
    //بقیه استثناها
    MessageBox.Show(exception.Message);
    }



    کد 2601 مربوط به درج رکورد تکراری هست
    کل کدهای استثنای SqlServer رو میتونید با این کوئری داخل SSMS ببینید


    SELECT * FROM sys.messages
    WHERE language_id = 1033
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  3. #3

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    جواب در پست قبلی توسط دوست ما داده شد.
    اما در مرود اینکه در موارد دیگه به مشکل نخوری و بحث Exception Handling رو پیاده سازی کنی بهتر هست از پایه اینمقابه رو بخونی و در مورد یک try و چندین catch‌بدونی.
    https://docs.microsoft.com/en-us/dot...ords/try-catch

  4. #4
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام

    کد 2601 مربوط به درج رکورد تکراری هست
    کل کدهای استثنای SqlServer رو میتونید با این کوئری داخل SSMS ببینید
    ولی برای من کد درج رکورد تکراری 2627 اومد اونطور که بررسی کردم...چرا برای شما کد 2601 هست؟!!

  5. #5

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    چون برای شما (2627)هندل کردنunique constraint هست که شامل unique Index میشه ولی برای ایشون هندل کردن unique Index هست.

    این کد رو اجرا کن میبینی که هر دو کد مورد نظر که دنبال تفاوتشون هستی رو توضیح داده و در کنار اون چند تا سطر دیگه با کد های مختلف برای duplicate key درنظر گرفته شده.
    SELECT* FROM sys.messages
    WHERE text like '%duplicate%' and text like '%key%' and language_id = 1033
    آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 16 مرداد 1396 در 21:19 عصر دلیل: اصلاح تگ کد

  6. #6
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    متشکرم از شما دوستان عزیز

    فقط در مورد دیتابیس اکسس چطوری میتونم این استثناها رو ببینم؟ کوئری اون به چه نحوی هستش؟

  7. #7

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    با سلام، خب دوست عزیز این چه روشیه که شما پیش گرفتی؟ چرا قبل از دستور insert نمیای یه سلکت بزنی ببینی یوزرنیم وارد شده تکراری هست یا نه، اگه تکراری بود پیام بده و گرنه عمل درج رو انجام بده، این همه دردسر هم نداره. مشکل شما با این روش چیه که رفتی سراغ catch های متعدد؟

  8. #8

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    با سلام، خب دوست عزیز این چه روشیه که شما پیش گرفتی؟ چرا قبل از دستور insert نمیای یه سلکت بزنی ببینی یوزرنیم وارد شده تکراری هست یا نه، اگه تکراری بود پیام بده و گرنه عمل درج رو انجام بده، این همه دردسر هم نداره. مشکل شما با این روش چیه که رفتی سراغ catch های متعدد؟
    سلام
    یعنی به نظر شما ، این روشی که گفته شد بهتره یا اینکه کوئری بزنید و نتیجه کوئری رو بگیرید و مقایسه کنید و اگر تکراری بود ، خطا نشون بدید؟!
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  9. #9

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    درود جناب اشتیانی عزیز، قبول دارم که با روشی که بنده عرض کردم، در حالتی که یوزرنیم دردسترس باشه دوتا کوئری اجرا میشه ولی تو یکی از مراجع انگلیسی خوندم که نوشته بود "واسه شرایطی که بصورت معمول رخ میدن، بهتر هست طوری اونهارو هندل کنین که از رخداد exception اجتناب بشه" در این مورد هم یوزرنیم چیزیه که اکثر افراد با ازمون و خطا یه یوزرنیم رو انتخاب مبکنن، یعنی اول کلمه ای رو انتخاب میکنن اگه قبلا ثبت شده بود دوباره یه کلمه دیگه و ....

  10. #10
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    با سلام، خب دوست عزیز این چه روشیه که شما پیش گرفتی؟ چرا قبل از دستور insert نمیای یه سلکت بزنی ببینی یوزرنیم وارد شده تکراری هست یا نه، اگه تکراری بود پیام بده و گرنه عمل درج رو انجام بده، این همه دردسر هم نداره. مشکل شما با این روش چیه که رفتی سراغ catch های متعدد؟
    فرض کن ما یه میلیون رکورد یا بیشتر داریم...به نظرت با این سلکت بیاد ببینه یوزرنیم تکراریه یا نه راه ایده الیه؟ یا با یه try catch...من فکر میکنم در سلکت تا بیاد کل رکورد رو بگرده سرعت پایین هستش و کاربر باید کمی منتظرباشه...ولی در try catch سرعت عملش بیشتره اینطور نیست؟

  11. #11

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    مطمئن باش در این مورد، کوئری سلکت با میلیون رکورد و میلیارد رکورد از لحاظ سرعت اجرا مشکلی نخواهند داشت

  12. #12

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    مطمئن باش در این مورد، کوئری سلکت با میلیون رکورد و میلیارد رکورد از لحاظ سرعت اجرا مشکلی نخواهند داشت
    من دیگه حرفی ندارم.

  13. #13
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط RIG000 مشاهده تاپیک
    من دیگه حرفی ندارم.
    واضحتر بیان میکنید نظرتونو؟

  14. #14

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام
    یعنی به نظر شما ، این روشی که گفته شد بهتره یا اینکه کوئری بزنید و نتیجه کوئری رو بگیرید و مقایسه کنید و اگر تکراری بود ، خطا نشون بدید؟!
    samiasoftیعنی اینکه این موردی که بالا اشاره کرد دستمون یعنی اینکه وقتی ما میتونیم با یک کار اصولی خطا رو هندل کنیم بریم یک کویری اضافه بزنیم پرا دیگه بریم یه کویری بزنیم تا بخایم مدیریت خطا کنیم؟!!!!!!!!!!
    علامت تعجب یعنی همین موضوع که دستمون اشاره کردن. شما با هندل کردن اکسپشن میتونید هم برنامه رو از روی اصول پیش ببرید و هم به پرفورمنس دیتابیس هم اهمیت بدید .
    پس یک اینکار برای این مورد در اینجا یک کار اشتباست
    و دو اینکه در پروژه های بزرگ هر برنامه نویس واسه هر زیرستیم از این حرکت ها بزنه پس پروژه در حال ترکیدن هست.
    درنهایت برای این مورد در اینجا یک کویری زدن و چک کردن در این حالت راهی هست که جواب میده اما کاملا نادرست.

  15. #15

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط RIG000 مشاهده تاپیک
    samiasoftیعنی اینکه این موردی که بالا اشاره کرد دستمون یعنی اینکه وقتی ما میتونیم با یک کار اصولی خطا رو هندل کنیم بریم یک کویری اضافه بزنیم پرا دیگه بریم یه کویری بزنیم تا بخایم مدیریت خطا کنیم؟!!!!!!!!!!
    علامت تعجب یعنی همین موضوع که دستمون اشاره کردن. شما با هندل کردن اکسپشن میتونید هم برنامه رو از روی اصول پیش ببرید و هم به پرفورمنس دیتابیس هم اهمیت بدید .
    پس یک اینکار برای این مورد در اینجا یک کار اشتباست
    و دو اینکه در پروژه های بزرگ هر برنامه نویس واسه هر زیرستیم از این حرکت ها بزنه پس پروژه در حال ترکیدن هست.
    درنهایت برای این مورد در اینجا یک کویری زدن و چک کردن در این حالت راهی هست که جواب میده اما کاملا نادرست.
    درسته حق با شماس، من تو جواب دهی عجله کردم و قبل از اینکه صد درصد مطمئن بشم اینجا جواب دادم، بعدش رفتم یه دیتابیس خیلی ساده با یه جدول و دوتا فیلد درست کردم و توش 12 میلیون و خورده ای داده ریختم، نتیجه جالب بود: واسه سلکت هایی که داده داخل جدول موجود بود، زمان اجرای کوئری به ثانیه نمیکشید و فقط در عرض میلی ثانیه اجرا میشد. اما واسه سلکتی که داده مورد نظرم داخل جول موجود نبود، زمان اجرا تا 3 و 4 ثانیه هم میرسید.

  16. #16

    نقل قول: بهترین حالت برای نمایش خطای تکراری بودن رکورد ثبتی

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام


    try
    {
    //کدهای درج اطلاعات
    }
    catch (SqlException sqlException)
    {
    //میتونید استثناهای اسکیوال رو با کدشون هندل کنید
    if (sqlException.Number == 2601)
    MessageBox.Show(sqlException.Message);
    }
    catch (Exception exception)
    {
    //بقیه استثناها
    MessageBox.Show(exception.Message);
    }



    کد 2601 مربوط به درج رکورد تکراری هست
    کل کدهای استثنای SqlServer رو میتونید با این کوئری داخل SSMS ببینید


    SELECT * FROM sys.messages
    WHERE language_id = 1033
    با سلام جناب آشتیانی اگه توی جدول بخواهیم با یک شرط داده تکراری وارد نشود چکار کنیم مثلا اگر مقدار فیلد 1جدول برابر x بودو مقدار فیلد 3 برابر با z بود در فیلد 2 داده تکراری بپذیر وگرنه نپذیر با استفاده از دستورات شما البته ممنون

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

  1. بهترین راه برای نمایش رکورد های زیاد در صفحه اول
    نوشته شده توسط R_Rajaee_Rad در بخش ASP.NET MVC
    پاسخ: 0
    آخرین پست: جمعه 01 آذر 1392, 21:12 عصر
  2. پاسخ: 14
    آخرین پست: یک شنبه 04 مهر 1389, 11:01 صبح
  3. گفتگو: بهترین حالت برای نمایش اطلاعات زیاد
    نوشته شده توسط yasemi در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 12 خرداد 1389, 07:27 صبح
  4. آرایه غیر مرتب بهترین الگوریتم برای نمایش تعداد تکرار
    نوشته شده توسط sohrab o در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 9
    آخرین پست: پنج شنبه 24 آبان 1386, 00:10 صبح
  5. بهترین انتخاب برای نمایش سندمالی
    نوشته شده توسط Mrs.Net در بخش C#‎‎
    پاسخ: 7
    آخرین پست: دوشنبه 30 بهمن 1385, 08:12 صبح

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

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