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

نام تاپیک: مشکل در ثبت اطلاعات در دیتابیس

  1. #1

    مشکل در ثبت اطلاعات در دیتابیس

    سلام
    دوستان من با ویژوال 2013 توی برنامم یسری اطلاعات توی دیتابیس ذخیره می کنم ، فقط مشکل اینه که ممکنه این اطلاعات تکراری باشند یعنی قبلا توی دیتا بیس ثبت شده باشند ، چه کار کنم که جلوی ثبت این دست از اطلاعات تکراری و بگیرم ؟
    توی اطلاعاتی که ثبت می کنم همواره یک کد هست که یونیک و ماله خودشه که برای فهمیدن اینکه این کد و سایر اطلاعات این کد توی دستابیس ثبت شده اند یا نه می شه استفاده کرد

  2. #2
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    قبل ثبت چک کن ببین همون اطلاعات رو داری یا نه
    اگه داشتی به کاربر بگو اطلاعات تکراریه
    اگه نداشتی ثبت کن

    البته اگر منظورت همین بود!!!!!!!!!!

  3. #3
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    سلام
    با اجازه آقای Mofid.m
    -----------------------
    اگه اون کد که گفتین یونیک و بی نظیر (واسه هر سطر) ... اگه کلید اصلی قرارش بدین ، دیگه مقدار تکراری نمیگره !
    و ان هم واس تکراری نبودن یه فیلد (اینجا id) :

    SqlConnection con2;                    SqlDataAdapter adapter;
    string conString = "Data Source=.;Initial Catalog=AnbarDB;Integrated Security=True";
    System.Data.DataTable dy = new System.Data.DataTable();
    con2 = new SqlConnection(conString);
    string chek = "select Id from TAnbar where Id='" + textBox1.Text + "'";
    adapter = new SqlDataAdapter(chek, con2);
    dy.Clear();
    adapter.Fill(dy);
    if (dy.Rows.Count > 0)
    {
    MessageBox.Show("شماره قبلا ثبت شده است", "هشدار", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    else
    {


    یا علی !

  4. #4

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    آقای Mofid.m خوب راه حل همینه که گفتید اما پیاده سازیشو میخواستم بدونم .
    در ضمن این کد منحصر بفرد ی که گفتم و نمی تونم بعنوان primery key جدولم بزارم . کد ID رو واسش گذاشتم . این کدی که گفتم که برای هر سطر منحصر بفرد هستش چیزی شبیه به کد دانشجویی هستش .

  5. #5
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    بزار یه مثال برات بزنم.
    شما فرض کن یه دیتابیس داری به اسم MyDB و توش یه جدول داری به اسم MyTable
    فیلد های جدولت :

    Table.jpg

    توی این جدول ما دوتا فیلد منحصر به فرد داریم یکی ID که از نوع Bigint و Identity رو برابر Yes گذاشتم تا یکی یکی خود SQL بهش اضافه کنه.
    فیلد Email هم که فیلد کلیده و مسلما منحصر به فرد.

    شما فرض کن یه همچین فرم داری که مقادیر نام، شماره تلفن ، ایمیل و توضیحات رو وارد میکنی
    txtName
    txtPhoneNO
    txtEmail
    txtDes
    و یه باتن داری برای ثبت
    btnInsert

    بریم سراغ کد نویسی:

    اول تو قسمت public partial class یه کانکشن سراسری تعریف میکنیم و بقیه کد ها رو تو رویداد کلیک باتن می نویسیم

    public partial class Form1 : Form    {
    public Form1()
    {
    InitializeComponent();
    }


    SqlConnection con = new SqlConnection(@"server=(local);database=MyDB;integ rated security=true");


    private void btnInsert_Click(object sender, EventArgs e)
    {
    //اول چک میکنیم که مقتادیر وارد شده از قبل در جدول وجود دارد.
    // برای این کار فقط ایمیل را چک میکنیم زیرا میتواند بقیه موارد تکراری باشد
    SqlDataAdapter da = new SqlDataAdapter("select * from MyTable where Email=@email", con);
    da.SelectCommand.CommandType = CommandType.Text;


    //مقدار تکست باکس ایمیل را به عنوان پارامتر ابه دستور اس کیو ال می فرستیم
    da.SelectCommand.Parameters.AddWithValue("@email", txtEmail.Text.Trim());


    DataTable dt = new DataTable();
    da.Fill(dt);


    if (dt.Rows.Count > 0) //یعنی مقداری با ایمیل وارد شده از قبل وجود داشت
    {
    MessageBox.Show("Your Email address has already intered!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    txtEmail.SelectAll();
    txtEmail.Focus();
    return;
    }



    SqlCommand com = new SqlCommand("insert into MyTable (Name,PhoneNO,Email,Description) values" +
    "(@name,@phone,@email,@des)", con);
    com.CommandType = CommandType.Text;
    com.Parameters.AddWithValue("@name", txtName.Text.Trim());
    com.Parameters.AddWithValue("@phone", txtPhoneNO.Text.Trim());
    com.Parameters.AddWithValue("@email", txtEmail.Text.Trim());
    com.Parameters.AddWithValue("@des", txtDes.Text.Trim());


    con.Open();
    com.ExecuteNonQuery();
    con.Close();


    MessageBox.Show("Your information was successfully registered", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);




    }





    }

  6. #6
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    اینم یادم رفت بگم که فیلد ID در واقع کاری انجام نمیده.
    شما زمانی که بخوای ایمیل های تکراری هم وارد کنی ، ID رو بزار فیلد کلید.
    برای ثبت اطلاعات هم نیازی نیست به این فیلد مقدار بدی.
    شما پروژتو ببین، اگه فیلد یکتایی داری همون رو بزار و ID هم نیازی نیست.

  7. #7
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    سلام
    این از اون روش که من رفتم بهتره ؟

  8. #8
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    نقل قول نوشته شده توسط ghasem110deh مشاهده تاپیک
    سلام
    این از اون روش که من رفتم بهتره ؟
    روش همونه
    اما شما امدی مستقیما تکست باکس رو قرار دادی تو دستور SQL
    بهتره از پارامتر برای این کار استفاده کنی

  9. #9
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    سلام
    چرا از Unique Index تو دیتابیس استفاده نمی‌کنی؟
    گره‌ای که با دست باز می‌شه رو که با دندون باز نمی‌کنن.

    صباصبوحی

  10. #10
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    سلام
    اگه از Unique Index استفاده کنیم چطور به کاربر بفهمونیم که کدوم گزینه (تکست باکس) تکراری وارد کرده ؟
    من الان دو تا از فیلدهام نباید تکراری باشه یکیش که Cod و اون یکی Barcod ، id رو هم که اتو هستش !
    اگه کد و بارکد رو یونیک بزاریم چطور باید نشون بدیم که کدومشون رو تکراری پر کرده !

  11. #11
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    نقل قول نوشته شده توسط ghasem110deh مشاهده تاپیک
    سلام
    اگه از Unique Index استفاده کنیم چطور به کاربر بفهمونیم که کدوم گزینه (تکست باکس) تکراری وارد کرده ؟
    من الان دو تا از فیلدهام نباید تکراری باشه یکیش که Cod و اون یکی Barcod ، id رو هم که اتو هستش !
    اگه کد و بارکد رو یونیک بزاریم چطور باید نشون بدیم که کدومشون رو تکراری پر کرده !
    سلام
    کد کالا باید یگانه باشه، پس یه اندیس یگانه می‌خواد.
    بارکد هم باید یگانه باشه، پس یه اندیس یگانه‌ی دیگه می‌خواد.
    دلیل نداره که یه اندیس برای هر دوی اینا درستی کنی. بعضی وقت‌ها دو فیلد در کنار هم یگانه هستن که یک اندیس لازمه.
    اما بعضی وقت‌ها هم باید برای تک تک اونا اندیس یگانه بسازی.
    وقتی خواستی Save کنی و خطا داد، تو متن خطا نام اندیسی که خطا رو ایجاد کرده به شما می‌ده. مثلاً IX_Goods1 که از روی
    اون می‌تونی بفهمی کدوم فیلد شرط اندیس شما رو نقض کرده.

    صبا صبوحی

  12. #12
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    2,018

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    نقل قول نوشته شده توسط ghasem110deh مشاهده تاپیک
    سلام
    اگه از Unique Index استفاده کنیم چطور به کاربر بفهمونیم که کدوم گزینه (تکست باکس) تکراری وارد کرده ؟
    من الان دو تا از فیلدهام نباید تکراری باشه یکیش که Cod و اون یکی Barcod ، id رو هم که اتو هستش !
    اگه کد و بارکد رو یونیک بزاریم چطور باید نشون بدیم که کدومشون رو تکراری پر کرده !
    دیتابیس قبل از ثبت کردن همه uniq ها رو چک میکنه و در صورت ایجاد خطا یک رویداد برای شما میفرسته که میتونید با ترجمه اون بفهمید کدوم فیلد(ها) مد نظر هست...

  13. #13

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

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

  14. #14
    کاربر دائمی آواتار Mofid.m
    تاریخ عضویت
    آبان 1392
    محل زندگی
    مازندران-تنکابن
    پست
    393

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    زمانی که شما اطلاعاتی داری توی دیتابیس میریزی فیلد کلید نباید تکراری وارد بشه.
    پس اگر شما اطلاعات تکراری بدی دیتابیس خطا میده و یه Exeption تو برنامت رخ میده.
    به این Sql Exeption میگن و شما با کنترل این Exeption میتونی به کاربر هشدار بدی.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: مشکل در ثبت اطلاعات در دیتابیس

    نقل قول نوشته شده توسط mokamel مشاهده تاپیک
    سلام
    حالا یه سوال دیگه :
    اگر من به دیتابیس دسترسی نداشته باشم و یا حق دخالت یا تغییر در آن را نداشته باشم . چطور ؟
    یعنی من فقط می دونم که قبلا توی دیتابیس سه سری اطلاعات هست و من هم یه سری اطلاعات می خوام توش بریزم که همشون دارای کد دانشجویی هستند . حالا تو برنامم چه کار کنم که اجازه ورود اطلاعات تکراری رو ندم . دقت کنید که من فقط می تونم توی برنامم دست ببرم ولاغیر
    سلام
    یه Transaction باز کن، دیتابیس رو چک کن که هیچ‌کدام از اون فیلد‌های خاص تو دیتابیس وجود نداشته باشه، بعد رکورد رو ثبت کن. بعد هم Transaction رو ببند.

    صبا صبوحی

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

  1. پاسخ: 0
    آخرین پست: جمعه 17 آبان 1392, 16:29 عصر
  2. سوال: مشکل در ثبت اطلاعات در دیتابیس
    نوشته شده توسط afshines در بخش C#‎‎
    پاسخ: 16
    آخرین پست: یک شنبه 24 دی 1391, 09:48 صبح
  3. سوال: مشکل با ثبت اطلاعات در دیتابیس
    نوشته شده توسط mamali-mohammad در بخش PHP
    پاسخ: 2
    آخرین پست: یک شنبه 18 دی 1390, 14:50 عصر
  4. سوال: مشکل در ثبت اطلاعات در دیتابیس
    نوشته شده توسط hercool در بخش PHP
    پاسخ: 5
    آخرین پست: پنج شنبه 16 تیر 1390, 21:44 عصر
  5. مشکل در ثبت اطلاعات در دیتابیس اکسس
    نوشته شده توسط jeniferxp در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 26 خرداد 1388, 21:48 عصر

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

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