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

نام تاپیک: مشکل ثبت کردن دوباره اطلاعات در sql sarver

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    مشکل ثبت کردن دوباره اطلاعات در sql sarver

    سلام

    من توی پروژه ام از پایگاه داده sql sarver استفاده کردم .

    دانشجو قراره اطلاعاتش را وارد کنه و من شماره دانشجویی را primary key تعریف کردم
    حالا وقتی یکی از دانشجوها مشخصاتش را وارد میکنه و اطلاعاتش ثبت میشه اگه دوباره دکمه insert را که همون مشخصات با همون شماره دانشجویی هست را بزنه برنامه پیغامی مبنی بر این شماره دانشجویی primary هست میده .

    من میخوام این پیغام به صورت فارسی داده بشه . چی کار باید بکنم . یعنی پیغام به این صورت باشه که این شماره دانشجویی قبلا ثبت شده

    دوم اینکه وقتی دانشجو اطلاعاتش ثبت می شه و دوباره همون اطلاعات را وارد میکنه پیغامی که داده می شه به دلیل primary key بودن شماره دانشجویی اما مشکل اینجاست که وقتی اطلاعات را پاک میکنه و دوباره اطلاعات دیگه ای را وارد میکنه دیگه هیچ اطلاعی ثبت نمی شه و کاربر مجبوره یکبار برنامه را ببنده و دوباره باز کنه .

    چه طور می تونم این دوتا مشکل را حل کنم .

    مرسی

  2. #2
    کاربر دائمی آواتار a.maleki
    تاریخ عضویت
    تیر 1386
    محل زندگی
    یه جائی تو گرانشهر تهران
    پست
    310

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    دوست عزیز لطفا کدی که نوشتید بگذارید تا بهتر بشه کمک کرد
    جهت رفع مشکل دوم کافی از دستور try استفاده کنید و نوع Catch و exseption رو از نوع sql و فقط کافی است که یک شرظ بگذارید که اگر فرض کد خطا مثلا 100 بود فالن پیغام رو بده

  3. #3
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    با سلام
    در مورد مشکل اول باید بگم کارهای زیادی میتونی انجام بدی من به دو مورد اشاره می کنم.
    1. قبل از ثبت با یک کوئری primary key دانشجوی جدید رو سرچ کنی و اگر موجود بود ثبت نکنی و پیغام را نشان دهی.
    2 . استفاده از Try...Catch ؛ که شما رویه ثبت رو در بلوک try و رویه نمایش پیغام خطا رو در قست catch قرار می دهی و بر حسب اینکه چه خطایی رخ داده پیغام مناسب رو نشان می دی که این راه حل بر راه اول اولویت دارد
    برای مطالعه بیشتر در این رابطه می توانی در مورد Try...Catch...Finally در همین سایت سرچ کنی یا اطلاعات کامل رو از سایت مایکروسافت در آدرس زیر مطالعه کنی
    http://msdn.microsoft.com/en-us/library/0yd65esw(VS.80).aspx

    و اما مشکل دوم به احتمال زیاد شما در پیاده سازی کدتون اشتباه کردید که ما تا کد شما رو نداشته باشیم نمی تونیم نظر قطعی بدیم ولی اینگونه اشتباهات معمولا بر اثر کپی پیست به وجود میاد یعنی شما کدی رو چند جا کپی کردید یکجا تغییر و اصلاح کرده اید ولی جاهای دیگر را فراموش کردید به هر حال باید برای اینکار برنامه را تریس کنید و در نقاط حساس مثل زمان حذف و زمان ثبت مجدد و بستن برنامه و ... بانک اطلاعات و منابع سیستم رو چک کنید . حتی ممکن هست که برای بار دوم که ثبت می کنید ثبت شده باشد ولی مثلا DataGridView رو refresh نکرده باشید.
    موفق باشید.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    نقل قول نوشته شده توسط khaste_007 مشاهده تاپیک
    با سلام
    در مورد مشکل اول باید بگم کارهای زیادی میتونی انجام بدی من به دو مورد اشاره می کنم.
    1. قبل از ثبت با یک کوئری primary key دانشجوی جدید رو سرچ کنی و اگر موجود بود ثبت نکنی و پیغام را نشان دهی.
    2 . استفاده از Try...Catch ؛ که شما رویه ثبت رو در بلوک try و رویه نمایش پیغام خطا رو در قست catch قرار می دهی و بر حسب اینکه چه خطایی رخ داده پیغام مناسب رو نشان می دی که این راه حل بر راه اول اولویت دارد
    برای مطالعه بیشتر در این رابطه می توانی در مورد Try...Catch...Finally در همین سایت سرچ کنی یا اطلاعات کامل رو از سایت مایکروسافت در آدرس زیر مطالعه کنی
    http://msdn.microsoft.com/en-us/library/0yd65esw(VS.80).aspx

    و اما مشکل دوم به احتمال زیاد شما در پیاده سازی کدتون اشتباه کردید که ما تا کد شما رو نداشته باشیم نمی تونیم نظر قطعی بدیم ولی اینگونه اشتباهات معمولا بر اثر کپی پیست به وجود میاد یعنی شما کدی رو چند جا کپی کردید یکجا تغییر و اصلاح کرده اید ولی جاهای دیگر را فراموش کردید به هر حال باید برای اینکار برنامه را تریس کنید و در نقاط حساس مثل زمان حذف و زمان ثبت مجدد و بستن برنامه و ... بانک اطلاعات و منابع سیستم رو چک کنید . حتی ممکن هست که برای بار دوم که ثبت می کنید ثبت شده باشد ولی مثلا DataGridView رو refresh نکرده باشید.
    موفق باشید.
    سلام دوست عزیز

    مشکل اول حل شد . من از try و catch استفاده کرده بودم . اما یادم رفته بود به جای massage پیغامی که دوست دارم را بزارم .

    اما مشکل دوم را نمیدونم چه طور حل کنم . یعنی وقتی پیغام داده می شه که چنین شماره ای قبلا ثبت شده . وقتی کاربر ID را ویرایش میکنه دوباره همون پیغام را میده که چنین شماره ای قبلا ثبت شده و اصلا اطلاعات جدید ثبت نمی شه .

    این هم کی که برای دکمه insert نوشتم .

    private void btnInsert_Click(object sender, EventArgs e)
    {
    try
    {
    string str1;
    str1 = "INSERT INTO TBook(Name, ID, Number) VALUES(@Name, @ID, @Number)";
    con.Open();
    cmd = new SqlCommand(str1, con);
    cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 50).Value = txtName.Text;
    cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 50).Value = txtID.Text;
    cmd.Parameters.Add("@Number", SqlDbType.NVarChar, 50).Value = txtNumber.Text;
    cmd.ExecuteNonQuery();
    ds.Clear();
    da.Fill(ds, "TBook");
    con.Close();
    MessageBox.Show("اطلاعات با موفقیت ثبت شد");
    }
    catch (System.Exception)
    {
    MessageBox.Show("این شماره دانشجویی قبلا ثبت شده است");
    }
    }
    آخرین ویرایش به وسیله mahdi_7610 : چهارشنبه 09 اردیبهشت 1388 در 20:17 عصر

  5. #5
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

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

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    نقل قول نوشته شده توسط khaste_007 مشاهده تاپیک
    شما برای هر خطایی که درون try اتفاق می افتد یک پیغام نشان می دهید و معلوم نیست خطا کجا رخ داده برنامه را تریس کنید و بگویید دقیقا خطا در چه خطی از برنامه رخ می دهد.
    سلام

    خطا توی خطی که توی پست 4 ابی کردم داده می شه .

    متن خطا هم اینه

    {"Violation of PRIMARY KEY constraint 'PK_Table_1'. Cannot insert duplicate key in object 'dbo.TBook'.\r\nThe statement has been terminated."}


    مرسی

  7. #7

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    با سلام
    دوست عزیز در قسمت catch و قبل از نمایش پیغام کانکشن خود را ببندید . con.close خطا به دلیل باز کردن مجدد کانکشن باز اتفاق می افتد.
    موفق باشید

  8. #8
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    نقل قول نوشته شده توسط araelectronic@ymail.com مشاهده تاپیک
    با سلام
    دوست عزیز در قسمت catch و قبل از نمایش پیغام کانکشن خود را ببندید . con.close خطا به دلیل باز کردن مجدد کانکشن باز اتفاق می افتد.
    موفق باشید
    با سلام و عرض پوزش
    در قسمت catch نباید کانکشن رو بست بلکه استاندارد آن در قسمت Finally می باشد.
    همچنین متن خطا دلالت بر تلاش برای ثبت اطلاعات primary key تکراری هست و ربطی به کانکشن ندارد.

    خطا توی خطی که توی پست 4 ابی کردم داده می شه .
    همونطور که دیده میشه اطلاعات با این primary key قبلا ثبت شده، وقتی این خطا رو میده یعنی حتما ثبت شده و نمی دونم شما چطور می گید ثبت نشده احتمالا جای دیگه ای غیر از دیتا بیس اصلی رو چک می کنید به هر صورت باید بیشتر دقت کنید همچنین روال حذف رو هم چک کنید.
    موفق باشید.

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    سلام
    دست هر دوی شما دوستان درد نکنه

    مشکل حل شد . درسته من کانکشن را نبسته بودم . در حالت Finally کانکشن را بستم و مشکل حل شد .

    مرسی

  10. #10

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    نقل قول نوشته شده توسط khaste_007 مشاهده تاپیک
    با سلام و عرض پوزش
    در قسمت catch نباید کانکشن رو بست بلکه استاندارد آن در قسمت Finally می باشد.
    همچنین متن خطا دلالت بر تلاش برای ثبت اطلاعات primary key تکراری هست و ربطی به کانکشن ندارد.
    با سلام
    ممنون از راهناییتون ولی دوست عزیز بستن کانکشن جای خاصی نداره جایی باید بست که مورد نیاز است.

  11. #11
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    نقل قول نوشته شده توسط araelectronic@ymail.com مشاهده تاپیک
    با سلام
    ممنون از راهناییتون ولی دوست عزیز بستن کانکشن جای خاصی نداره جایی باید بست که مورد نیاز است.
    با سلام
    برای روشن شدن مطلب بیشتر توضیح می دهم
    بله هر جایی می توانید ببندید من هم که گفتم استاندارد مثلا وقتی شما کانکشن را در catch ببندید فقط وقتی یک خطا رخ می دهد کانکشن بسته خواهد شد که برای رفع آن هم باید در catch و هم try کانکشن رو ببندید که این استاندارد کد نویسی نیست که دو بار این کار را بکنید و اصلا فلسفه وجود داشتن Finally همین هست که هر کاری که چه خطا رخ بدهد و چه ندهد باید انجام شود در این قسمت نوشته می شود.
    من قصدم تذکر روش درست کد نویسی بود و اگر نه که کد رو هزار جور میشه نوشت.

  12. #12

    نقل قول: مشکل ثبت کردن دوباره اطلاعات در sql sarver

    نقل قول نوشته شده توسط khaste_007 مشاهده تاپیک
    با سلام و عرض پوزش
    همچنین متن خطا دلالت بر تلاش برای ثبت اطلاعات primary key تکراری هست و ربطی به کانکشن ندارد.

    همونطور که دیده میشه اطلاعات با این primary key قبلا ثبت شده، وقتی این خطا رو میده یعنی حتما ثبت شده و نمی دونم شما چطور می گید ثبت نشده احتمالا جای دیگه ای غیر از دیتا بیس اصلی رو چک می کنید به هر صورت باید بیشتر دقت کنید همچنین روال حذف رو هم چک کنید.
    موفق باشید.

    با سلام
    دوست عزیز ممنون از تلاش شما . ولی سعی کنید اول برنامه نویسی را یاد بگیرید و error را تشخیص بدید . بعدا در مورد نحوه برنامه نوشتن آموزش بدید در آنصورت حرف و تذکرتون تاثیر بیشتری خواهد داشت و مبتدی هایی مثل من هم استقبال میکنند.
    موفق باشید

برچسب های این تاپیک

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

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