PDA

View Full Version : مشكل در نگه داري اطلاعات وارد شده در ديتابيس!!!



cazino86
شنبه 19 مرداد 1387, 19:26 عصر
با سلام.حتمآ پيش خودتون ميگيد كه اين ديگه چه سوالي هستش؟

ديتابيس كه براي نگه داري اطلاعات هست چطوره كه در نگه داري اطلاعات مشكل پيش اومده؟

خوب اولش بگم كه من اولين بارمه كه با ديتابيس كار ميكنم.يك برنامه نمونه در سايت بود اما با كتابي كه من خونده بودم مطابقت نداشت!!!

خوب من از گزينه project و edd new item يك ديتابيس به برنامه خودم اظافه كردم.بعدش در ديتابيس جدول ايجاد كردم.3 تا سطون هم ايجاد كردم.بعدش يك كنترل ديتا گريد ويو به فرم اظافه كردم و اون رو به ديتابيسم ارتباط دادمش.

حالا نميدونم چرا وقتي من اطلاعات رو وارد ديتابيس ميكنم و يه كم در كدها تغيير ايجاد ميكنم اطلاعات قبلي من پاك ميشه و اصلا ديده نميشه حتي اگه از كل درتابيس query بگيرم.من نمونه برنامه رو براي شما ميذارم و اون قسمتي از كدها رو هم كه استفاده ميكنم رو به صورت txt گذاشتم تا دوستان من رو به طور كامل راهنمايي كنن.

در ضمن يك كنترل كريستال ويو.. هم گذاشتم كه نميدونم چرا اون هم هيچ گزارشي رو نشون نميده؟!

hdv212
شنبه 19 مرداد 1387, 20:07 عصر
من برنامه ی شما رو دیدم، ظاهرا مشکلی نیست، فکر کنم شما دیتابیسی رو که در پروژه ی شما موجود هست با دیتابیسی که کنار فایل اجراییتون هست رو با هم قاطی کردید، دیتابیس اصلی اونی هست که در کنار فایل اجرایی شماست، اگر یکبار برنامه تون رو خارج ا زمحیط Visual Studio اجرا کنید و چند رکورد اضافه کنید و سپس ببندید و دوباره اجراش کنید، خواهید دید که رکوردهای شما به درستی در دیتابیس ذخیره میشن.

اگر دیدی باز چنین عملی تکرار میشه (که برای من درست بود)، در Solution Explorer دیتابیست رو انتخاب کن و در قسمت Properties گزینه ی Copy to Output Directory رو معادل Do not copy قرار بده، این به خاطر اینه که هر بار پروژه تون رو Build میکنید، یکبار دیتابیس رو در شاخه ی Debug برنامه ی شما کپی میکنه، با قرار دادن روی گزینه ی Do not copy، دیگه چنین کاری رو انجام نمیده.
موفق باشید

cazino86
جمعه 25 مرداد 1387, 18:14 عصر
به یاد او::

من نمیتونم که گزینه Copy to Output Directory رو معادل Do not copy کنم چون ارور میده و نمیذاره که برنامه کامپایل بشه.تصویر ارور مربوطه رو در زیر گذاشتم ::

http://i36.tinypic.com/2ynj60m.gif

میشه بگید که دلیل این ارور چیه؟

Sajjad.Aghapour
جمعه 25 مرداد 1387, 18:39 عصر
اگر دیدی باز چنین عملی تکرار میشه (که برای من درست بود)، در Solution Explorer دیتابیست رو انتخاب کن و در قسمت Properties گزینه ی Copy to Output Directory رو معادل Do not copy قرار بده، این به خاطر اینه که هر بار پروژه تون رو Build میکنید، یکبار دیتابیس رو در شاخه ی Debug برنامه ی شما کپی میکنه، با قرار دادن روی گزینه ی Do not copy، دیگه چنین کاری رو انجام نمیده.

فکر نکنم دلیلی به این کار باشه.نمی دونم چرا express دارای چنین خاصیتی هست که وقتی برنامه رو debug می کنی اطلاعاتی که شما قبلا در زمان اجرا به دیتابیس افزودید از بین میره.می تونید امتحان کنید. در زمان طراحی اطلاعاتی رو به جدولتون اضافه کنید.F5 رو بزنید.حالا اطلاعات رو در دیتاگرید به نمایش در بیارید.حالا در زمان اجرا هم اطلاعاتی رو insert کنید.خواهید دید که مشکلی وجود نداره و اطلاعات به درستی ثبت شدن.اما با خارج شدن از برنامه و زدن دوباره F5 خواهید دید که فقط همون اطلاعاتی که در زمان طراحی به جدولتون اضافه کردید نمایش داده میشه.
البته این مشکل فقط با debug برنامه ایجاد میشه و اگه شما مستقیم با فایل exe که در پوشه debug هست کار کنید دیگه این مشکل وجود نخواهد داشت.

cazino86
جمعه 25 مرداد 1387, 18:45 عصر
به یاد او::

در برنامه های نمونه که در این سایت وجود داره هیچ کدوم با این مشکل روبرو نیستند.اما اون برنامه ها هیچ کدوم از دیتابیس با پسوند mdf استفاده نمیکنن.

شما میگید اگه من برنامه رو واسش ستاپ بسازم و روی یک سیستم دیگه تستش کنم دیگه این مشکل پیش نمیاد؟

ولی این هم کمی عجیبه چون نباید همچین مشکلی وجود داشته باشه؟

اصلا چرا وقتی گزینه Copy to Output Directory رو معادل Do not copy میکنم اصلا برنامه دیباگ نمیشه و ارور بالا رو میده؟

Sajjad.Aghapour
جمعه 25 مرداد 1387, 19:22 عصر
میشه بگید برنامه هایی که این مشکل رو ندارن از چه نوع دیتابیسی استفاده کردن؟


شما میگید اگه من برنامه رو واسش ستاپ بسازم و روی یک سیستم دیگه تستش کنم دیگه این مشکل پیش نمیاد؟

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


ولی این هم کمی عجیبه چون نباید همچین مشکلی وجود داشته باشه؟

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


اصلا چرا وقتی گزینه Copy to Output Directory رو معادل Do not copy میکنم اصلا برنامه دیباگ نمیشه و ارور بالا رو میده؟

چون دیگه دیتابیسی درون دایرکتوریتون وجود نداره.باید دیتابیستون رو با آدرس جدید داخل کانکشن استرینگ attach کنید....

cazino86
جمعه 25 مرداد 1387, 19:44 عصر
به یاد او::


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

خوب اگه درست یادم باشه یکی از این برنامه ها که سورس کدهای من هم به اون برنامه شباهت داره از دیتابیس با پسوند ldf استفاده میکنه.دقیقا برنامه من با اون برنامه یکی هست فقط من به جای oledb از sqldb اسفاده کردم.مثلا به جای oledconnection از sqlconnection استفاده کردم.


باید دیتابیستون رو با آدرس جدید داخل کانکشن استرینگ attach کنید....

میشه در مورد این قسمت از پاسختون کمی بیشتر راهنمایی کنید؟ اگه ممکنه یک کانکشن نمونه مثال بزنید.

Sajjad.Aghapour
جمعه 25 مرداد 1387, 21:35 عصر
نگاه کن دوست عزیز.من هم گفتم که این مشکل رو در express دیدم و در نوع دیگه ای از دیتابیس ندیدم.
در مورد attach باید بگم که در connectionString به جای |datadirectory| باید آدرس دیتابیسی که دیگه در کنار فایل اجرایی شما قرار نداره رو بدید.......