PDA

View Full Version : مشکل با آدرس دهی Database



aligh662000
چهارشنبه 02 اسفند 1385, 12:13 عصر
من هر چی جستجو کردم! نتونستم جواب سوالم رو بگیرم به خاطر همین تاپیک جدید زدم!
من با پایگاه داده ام با این کد وصل میشم!




public static OleDbConnection cnn = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "/myDB.mdb");

حالا من یک مشکل دارم!
وقتی برنامه رو اجرا میکنم یک کپی از دیتا بیسی که کنار فرم هام در هارد ذخبره کردم در شاخه
Bin/debug گذاشته میشه!
و برنامه بر حسب اون اجرا میشه!
دیتاهایی که دارم به راحتی در اون ذخیره میشه!
اما مشکل اینجاس که دفعه بعد که برنامه رو اجرا میکنم دوباره همون روند قبلی رو میره ....
یعنی از دیتا بیس قدیمی که تغییرات من در اون اعمال نشده یه کپی میگره و همونجا میزاره!
به این ترتیب تمام داده هایی که من وارد کردن حذف میشن!
حالا مشکل کاره من کجاس؟!

ARA
پنج شنبه 03 اسفند 1385, 00:26 صبح
برنامت رو بگذار اینجا با برو بچ چکش میکنیم یا یک برنامه ساده و نمونه بگذار تا روش چک کنیم

linux
پنج شنبه 03 اسفند 1385, 00:31 صبح
من هر چی جستجو کردم! نتونستم جواب سوالم رو بگیرم به خاطر همین تاپیک جدید زدم!
من با پایگاه داده ام با این کد وصل میشم!




public static OleDbConnection cnn = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "/myDB.mdb");

حالا من یک مشکل دارم!
وقتی برنامه رو اجرا میکنم یک کپی از دیتا بیسی که کنار فرم هام در هارد ذخبره کردم در شاخه
Bin/debug گذاشته میشه!
و برنامه بر حسب اون اجرا میشه!
دیتاهایی که دارم به راحتی در اون ذخیره میشه!
اما مشکل اینجاس که دفعه بعد که برنامه رو اجرا میکنم دوباره همون روند قبلی رو میره ....
یعنی از دیتا بیس قدیمی که تغییرات من در اون اعمال نشده یه کپی میگره و همونجا میزاره!
به این ترتیب تمام داده هایی که من وارد کردن حذف میشن!
حالا مشکل کاره من کجاس؟!
این مشکلی نیست در حقیقت تا وقتی که برنامه خودتان را relase نکردید همیجوری هست

PC2st
پنج شنبه 03 اسفند 1385, 10:03 صبح
اگر دیتابیس را به پروژه اضافه کرده باشید (حالا به هر طریقی مثل Drag and Drop یا استفاده از Visual Studio Wizards)، از توی پروژه، روی دیتابیسی که اضافه کرده اید کلیک کنید تا در پنجره Properties خاصیتهای آن نمایش داده شود...
معمولا این حالت پیش میآد چون خاصیت Copy To Out Directory آن روی Copy always تنظیم شده است.
برای اینکه به هدف خود برسید، این خاصیت را روی Copy if newer تنظیم نمائید.

dot_net_lover2
پنج شنبه 03 اسفند 1385, 11:19 صبح
اگر از همون اول DB رو در Bin قرار بدی دیگه هیچ مشکلی نداری.

aligh662000
شنبه 05 اسفند 1385, 11:39 صبح
این مشکلی نیست در حقیقت تا وقتی که برنامه خودتان را relase نکردید همیجوری هست

چه جوری میتونم این کار رو بکنم!؟


اگر دیتابیس را به پروژه اضافه کرده باشید (حالا به هر طریقی مثل Drag and Drop یا استفاده از Visual Studio Wizards)، از توی پروژه، روی دیتابیسی که اضافه کرده اید کلیک کنید تا در پنجره Properties خاصیتهای آن نمایش داده شود...
معمولا این حالت پیش میآد چون خاصیت Copy To Out Directory آن روی Copy always تنظیم شده است.
برای اینکه به هدف خود برسید، این خاصیت را روی Copy if newer تنظیم نمائید.

من جایی DB رو به پروژه اضافه نکردم فقط یک کانکشن نوشتم که کدش رو بالا گذاشتم! :متفکر:

once4ever
شنبه 05 اسفند 1385, 11:53 صبح
اگه اینجوری باشه:
شما با ویزارد یه کانکشن ساختید؟
از پنجره DataSource Design استفاده میکنی؟
...
هرکدوم ازحالتهای بالا باعث میشه که (البته با یه سوال yes no) ویژوال یک نسخه از بانک شما (که معمولا خالی هست) داخل مسیر فایلهای کلاس نگه داره و هربار که برنامه run میشه. اون نسخه توی مسیر فایل اجرایی شما کپی میشه و شاطلاعاتی که میدید توی اون فایل ذخیره میشه. پس وقتی دوباره برنامه رو run میکنید باز همون نسخه خالی کپی میشه روی اطلاعات شما.
راه حل:
از Solution Explorer روی بانک کلیک کن و propertise بیار و برای مشخصه copy to output directory گزینه dont copy انتخاب کن

aligh662000
شنبه 05 اسفند 1385, 12:51 عصر
مشکل حل شد به همون طریقی که جناب once4ever فرمودن
از جناب PC2st.ir تشکر میکنم!
و یک سوال به صورت پیش فرض اون قسمت فعاله هر وقت خواستم برنامه بنویسم باید برم dont copy رو از copy to output directory انتاخب کنم؟!
اصولآ این خاصیت به چه دردی میخوره؟!

PC2st
شنبه 05 اسفند 1385, 17:34 عصر
اصولآ این خاصیت به چه دردی میخوره؟!
با توجه به توضیحی که جناب linux گفتند، هر تغییری روی database در هنگام تست برنامه، به حالت اول برمی‌گرده. به عبارت دیگه، خیالمون راحته که database تحت تغییر و تحولات ناشی از تست برنامه قرار نمیگیره!
بعد از اینکه یک database رو به برنامه اضافه کردیم، پس از هر بار اجرای برنامه (تست) برنامه، یک کپی از اون به bin\debug\ فرستاده میشه. با خاصیت Copy to output directory میشه تنظیم کرد که هربار یک کپی فرستاده بشه یا خیر یا درصورتی که جدید بود.