PDA

View Full Version : سوال: جلوکیری از یک خطای db



reyhaneh-sh
دوشنبه 25 شهریور 1387, 00:43 صبح
سلام دوستان من در یک جدول اکسس که مجبورم سه تا فیلد را کلید را قرار بدم و از داده تکراری با توجه به اون کلیدا جلوگیری کنم
خوب موقعی که commnde مورد نظر را برای دستور insert اجرا میکنم خود برنامه اگه داده هام تکراری باشه روی ExecuteNonQuery ایراد میگیره و پیغامی مبنی بر تکراری بودن با توجه به primarykey میده . اگر من بخوام جلوی ایجاد این error را بگیرم باید شرط بگذارم و با توجه به اینکه روز به روز تعداد رکوردای پایگاه داده ام زیاد میشه بعد از مدت کوتاهی باید کلی رکورد را بگرده و این کار برنامه ام را کند میکنه . حالا من میخام همون ارور خود سیستم را try catch کنم ولی سوالم اینه که چه جوری به برنامه ام بفهمونم منظور من دقیق همون ارور کلید هست . چون مثلا اگر پایگاه داده ام هم پاک بشه ارورش میره توی قسمت catch و من نمیفهمم که این ایراد دقیقا مال چی بوده

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

Esmail Solhkhah
دوشنبه 25 شهریور 1387, 02:01 صبح
سلام دوست عزیز
میتونی از این کد استفاده کنی

try
{
// Your code Here
}
catch (Exception ex)
{
if (ex.GetType() == typeof(ConstraintException))
{
// rised if exeption = ConstraintException
}
else
{
// rised if exeption != ConstraintException
}
}

reyhaneh-sh
دوشنبه 25 شهریور 1387, 20:12 عصر
میشه توضیح بدین منظورتون از این جمله چیه ؟
// rised if exeption = ConstraintException

pars.engineer
دوشنبه 25 شهریور 1387, 20:43 عصر
با توجه به اینکه روز به روز تعداد رکوردای پایگاه داده ام زیاد میشه بعد از مدت کوتاهی باید کلی رکورد را بگرده و این کار برنامه ام را کند میکنه .


سرعت برنامه شما خيلي كم تحت تاثير داده هاي زياد قرار مي گيرد، چرا كه براي جلوگيري از ورود داده هاي تكراري اصلا نيازي نيست كه كل ديتا بيس درون برنامه شما بارگذاري شود.
اگر از SQL Server استفاده كنيد با استفاده از Index مي توانيد در چند ميلي ثانيه يك ديتا بيس با يك ميليون ركورد را جستجو كنيد.
در اكسس نيز اين زمان تفاوت چشمگيري ندارد.(حداقل براي 10 هزار ركورد)

reyhaneh-sh
پنج شنبه 28 شهریور 1387, 17:06 عصر
دوستان عزیز من بهتره سوال اولم را اینجوری بپرسم چطوری میتونم شماره ارور مورد نظرمو پیدا کنم
من کاری کردم که این ارور اتفاق میافته ولی شماره ای برای اون درج نشده
اگه راهنمایی کنید خیلی متشکر میشم