PDA

View Full Version : جلوگیری از درج اطلاعات تکراری در بانک



misagh1370
پنج شنبه 17 مرداد 1392, 13:16 عصر
سلام
دوستان میخوام وقتی اطلاعاتم رو دارم وارد میکنم اگه اون داده تکراری بود برنامه پیام بده که این مقدار قبلا در بانک وارد شده.تو تالار سرچ کردم اما اکثرا گفتن اون فیلد رو کلید اصلی قرار بده من نمیخوام این کار رو بکنم دوستان اگر راهی رو بلدن راهنمایی بفرمایند لطفا.

asghar2008
پنج شنبه 17 مرداد 1392, 13:20 عصر
سلام

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

misagh1370
پنج شنبه 17 مرداد 1392, 13:43 عصر
ممنون روش خوبیه.اما مشکلم اینجاست که چطور بگم در صورت بودن نشون بده شرطش چطوریه؟
این کد جستجومه

SqlDataAdapter1.SelectCommand.CommandText = "select * from company where city like '%" & Txt_citysearch.Text & "%'"

asghar2008
پنج شنبه 17 مرداد 1392, 14:09 عصر
یه نمونه برات میذارم خودم از این روش استفاده میکنم.

هرجاش سوال داشتی بپرس :


Dim daadap As New SqlDataAdapter("select * from company where city like '%" & Txt_citysearch.Text & "%'", cn)
Dim dt As New DataTable
Dim ds As New DataSet
cn.Open()
daadap.Fill(ds, "company")
dt = ds.Tables("company")
cn.Close()
If dt.Rows.Count > 0 Then
MsgBox("شخصی با این مشخصات در دیتابیس هست", MsgBoxStyle.Exclamation, "تکراری")

Else
عمل ذخیره کردن در این قسمت..

misagh1370
پنج شنبه 17 مرداد 1392, 14:32 عصر
asghar2008 (http://barnamenevis.org/member.php?125018-asghar2008) :دمت گرم دوست من.کد رو نوشتم و تست کردم و انجام شد.مرسییییی:تشویق:

nasim bahari
پنج شنبه 17 مرداد 1392, 15:09 عصر
سلام
اگه بانکتون بزرگ باشه ( منظورم اینکه تعداد رکورد های جداول زیاد باشه ) روش خوبی نیست

از کدوم dbms استفاده می کنی ؟
برای اینکار نیازی نیست که اون فیلد رو حتما کلید اصلی کنی ، می تونی هر تعداد از فبلدها رو که می خوای uniqe کنی که مقدار یکتا بگیرند.

عیدت مبارک

asghar2008
پنج شنبه 17 مرداد 1392, 15:25 عصر
سلام
اگه بانکتون بزرگ باشه ( منظورم اینکه تعداد رکورد های جداول زیاد باشه ) روش خوبی نیست

از کدوم dbms استفاده می کنی ؟
برای اینکار نیازی نیست که اون فیلد رو حتما کلید اصلی کنی ، می تونی هر تعداد از فبلدها رو که می خوای uniqe کنی که مقدار یکتا بگیرند.

عیدت مبارک

سلام

میشه یه مثال عملی بزنید...

ممنون

nasim bahari
پنج شنبه 17 مرداد 1392, 15:47 عصر
من نمیدونم شما از چه dbms استفاده می کنی sql یا oracle یا access یا .....

ولی وقتی داری جدول رو می سازی و فیلدها رو تعریف می کنی یکسری گزینه در اختیار شماست که می تونی برای فیلدها انتخاب کنی مثل کلید اصلی یا allow null و uniqe

asghar2008
پنج شنبه 17 مرداد 1392, 16:10 عصر
از SQL Sever استفاده میکنم.

در مورد Unique میشه بیشتر توضیح بدین ؟

اگه تیکش رو بزنیم موقع درج داده تکراری چه اتفاقی میافته ؟؟

nasim bahari
پنج شنبه 17 مرداد 1392, 16:39 عصر
پس احتمالا شما دانشجوی کامپیوتر نیستین !

طبق قانون پایگاه داده ای رابطه ای ( همین که استفاده می کنی ) ، هر جدول باید کلید اصلی داشته باشه ، نمی خوام در اون مورد توضیح بدم چون زیاد می شه ، اینو می گم چون بعضی ها به دوستمون گفته بودند که فیلد مورد نظرت رو کلید اصلی قرار بده دلیلشون این بود که کلید اصلی خواصی داره که مهمترین هاش غیر تهی بودن ( یعنی ورود حتمی مقدار ) و یکتا بودن ( uniqe ) بودن است.
البته شما این خاصیت رو برای فیلدهای غیر کلید اصلی رو هم در اختیار دارین. با این کار مقدار تکراری در اون فیلد ذخیره نمیشه ! پیغام خطا به برنامه می فرسته که با try ...cacth می تونی بفهمی و عکس العمل مناسب مثل دادن پیغام تکراری بودن به کاربر رو انجام بدی
نگو مثال بزن...آموزش تصویری بذار ....یا try ....catch چیه که حالشو ندارم.....
دل از دست این سایت خون شده.....

antionline
پنج شنبه 17 مرداد 1392, 16:44 عصر
پس احتمالا شما دانشجوی کامپیوتر نیستین !

طبق قانون پایگاه داده ای رابطه ای ( همین که استفاده می کنی ) ، هر جدول باید کلید اصلی داشته باشه ، نمی خوام در اون مورد توضیح بدم چون زیاد می شه ، اینو می گم چون بعضی ها به دوستمون گفته بودند که فیلد مورد نظرت رو کلید اصلی قرار بده دلیلشون این بود که کلید اصلی خواصی داره که مهمترین هاش غیر تهی بودن ( یعنی ورود حتمی مقدار ) و یکتا بودن ( uniqe ) بودن است.
البته شما این خاصیت رو برای فیلدهای غیر کلید اصلی رو هم در اختیار دارین. با این کار مقدار تکراری در اون فیلد ذخیره نمیشه ! پیغام خطا به برنامه می فرسته که با try ...cacth می تونی بفهمی و عکس العمل مناسب مثل دادن پیغام تکراری بودن به کاربر رو انجام بدی
نگو مثال بزن...آموزش تصویری بذار ....یا try ....catch چیه که حالشو ندارم.....
دل از دست این سایت خون شده.....
من پیشنهاد میکنم 2فصل اول پایگاه داده و ساختمان داده ها رو بخونن تا حسابی گیج بشن !:بامزه:

misagh1370
پنج شنبه 17 مرداد 1392, 18:54 عصر
دوست عزیز از اس کیو ال استفاده میکنم.پنجره ی propertiesاس کیو ال رو دیدم یونیک رو پیدا نکردم.میشه لطفا کنی یه ذره بیشتر توضیح بدی؟ داداش ممنون میشم

asghar2008
جمعه 18 مرداد 1392, 01:18 صبح
پس احتمالا شما دانشجوی کامپیوتر نیستین !



سلام


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

دوما ، چه ربطی داشت ؟؟!!

از قدیم گفتن همه چیز را همگان دانند.:لبخندساده:

و در آخر ،اگه ما یک فیلد رو کلید اصلی(primary key) در نظر بگیریم خود کلید اصلی Unique هست چه لزومی داره دوباره کاری بشه ؟؟


من پیشنهاد میکنم 2فصل اول پایگاه داده و ساختمان داده ها رو بخونن تا حسابی گیج بشن !:بامزه:

عزیزمن شما بجای اینکه پارازیت بندازی راهنمایی کن اگه بلدم هم نیستی حرف نزن !! :کف:

nasim bahari
جمعه 18 مرداد 1392, 09:07 صبح
سلام اصغر جان

شما ظاهراً از حرف های دوستمون antionline خیلی ناراحت شدین........

نیازی نیست به هر بحثی جواب بدین ( توصیه من به شما ).....

خوب اگه دوستمون دانشجوی کامپیوتر بود این مبحث ابتدایی پایگاه داده رو می دونست....

بله جانم ، خود من هم اشاره کردم که یکی از چندین خصوصیت کلید اصلی ، uniqe بودن آن هست.....

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

موفق باشی، داش اصغر

misagh1370
جمعه 18 مرداد 1392, 13:27 عصر
نه عزیزم من مهندس کامپیوترم گرایش نرم افزار.اما بانک اطلاعاتی رو چون اختیاری بود پاس نکردم و به جاش چند رسانه ای گرفتم..عزیز من اگه شما بلدین که راهنمایی بفرما اگه نه که چکار رشتم داری؟میخوای ضایعم کنی ؟باشه ضایع شدم :تشویق:
سپاس فراوان:ناراحت:

nasim bahari
جمعه 18 مرداد 1392, 17:32 عصر
چرا .........؟

بهت بر نخوره .... من فقط حدس زدم

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

به هر حال بگذریم از دست من ناراحت نشو ... ما خودمون آخر ضایعاتیم.....

sql روی سیستم نصب ندارم.... گفتم بالاخره یکی راهنمایی می کنه که .....نکرد ...

فیلد موردنظرت رو index قرار بده و برای اون خاصیت unique را انتخاب کن ....

http://i.stack.imgur.com/VglCD.png

http://i.stack.imgur.com/VQMKA.png

موفق باشی ...آقای زودرنج

misagh1370
جمعه 18 مرداد 1392, 18:45 عصر
اولا خیلی ممنون از راهنماییتون .
دوما کی گفته من آقاهم؟!!!!!misagh مثل nasimاسم مشترکه:قهقهه: