PDA

View Full Version : چرا تغییرات در DataBase در C# ذخیره نمی شود؟



taze kar 1
چهارشنبه 23 اسفند 1391, 10:22 صبح
سلام دوستان
من برنامه هایی که با C#نوشتم طوریه که تغییراتی که در هنگام اجرای برنامه روی پایگاه داده اعمال میشه ذخیره میشه اما پس از اجرای مجدد برنامه داده ها از روی پایگاه داده اصلی لود میشه که تغییرات قبلی رو از بین می بره لطفا یه راهی بهم معرفی کنید که بشه این برنامه رو روی سیستمی که باید بحالت اجرایی(نه پروژه) اجراشه کار کنه یعنی بدون نیاز به vs
و تغییرات روی پایگاه داده پایدار بمونه

Tiam121
چهارشنبه 23 اسفند 1391, 10:29 صبح
برنامه رو تریس کن و ببین تغییرات توی دیتابیس ثبت میشه بعد اگر لازم شد نمونه کدی رو که نوشتی بزار تا بشه بررسی کرد

veniz2008
چهارشنبه 23 اسفند 1391, 10:33 صبح
سلام.
دلیل اصلی که دوستان دیر به جواب سوال هاشون میرسن بیان ضعیف یا ناقص بودن توضیحاتشون هست.
در مورد سوال شما هم دقیقا همین مورد به چشم میخوره. آیا داده ذخیره میشه؟ (یعنی داخل دیتابیس مقادیر ثبت میشن؟ و بعدش در اجرای مجدد داده ها حذف میشه؟).
کدتون که باهاش درج میکنید رو بذارید.
در مورد بخش دوم سوالتون: خود vs موقعی که پروژه رو اجرا می کنید یک فایل exe در مسیر bin\debug واستون میسازه که شما رو بی نیاز از نصب Vs در سیستم مقصد میکنه. میتونید این فایل رو بر روی سیستم مقصد قرار بدید (دیتابیس رو هم بایستی منتقل کنید + نرم افزارهای جانبی مثل کریستال ریپورت رو هم اگر در برنامه استفاده کردید بایستی به سیستم مقصد منتقل کنید.).

Tiam121
چهارشنبه 23 اسفند 1391, 10:38 صبح
دلیل اصلی که دوستان دیر به جواب سوال هاشون میرسن بیان ضعیف یا ناقص بودن توضیحاتشون هست.


کاملا نکته بجایی بود

mhsmity
چهارشنبه 23 اسفند 1391, 13:11 عصر
سلام.
وقتی برنامه اجرا میشه یک نسخه از پایگاه داده برنامه در پوشه دیباگ کپی می شود. و تمام تغییرات در پایگاه داده جدید اعمال می شود تا پایگاه داده برنامه از هرگونه تغییری در امان باشد.

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

taze kar 1
چهارشنبه 23 اسفند 1391, 13:26 عصر
من خداییش تازه کارم 5 ماه C# رو شروع کردم اما اونقدر میدونم که اون فایلی که در bin\debugهست بدون فایل های کتابخانه ای که هنگام نصبVS کپی میشه اجرا نمیشه
یعنی اون فایل روی سیستمی اجرا میشه که vs داشته باشه دوست عزیز

taze kar 1
چهارشنبه 23 اسفند 1391, 13:27 عصر
سلام.
دلیل اصلی که دوستان دیر به جواب سوال هاشون میرسن بیان ضعیف یا ناقص بودن توضیحاتشون هست.
در مورد سوال شما هم دقیقا همین مورد به چشم میخوره. آیا داده ذخیره میشه؟ (یعنی داخل دیتابیس مقادیر ثبت میشن؟ و بعدش در اجرای مجدد داده ها حذف میشه؟).
کدتون که باهاش درج میکنید رو بذارید.
در مورد بخش دوم سوالتون: خود vs موقعی که پروژه رو اجرا می کنید یک فایل exe در مسیر bin\debug واستون میسازه که شما رو بی نیاز از نصب Vs در سیستم مقصد میکنه. میتونید این فایل رو بر روی سیستم مقصد قرار بدید (دیتابیس رو هم بایستی منتقل کنید + نرم افزارهای جانبی مثل کریستال ریپورت رو هم اگر در برنامه استفاده کردید بایستی به سیستم مقصد منتقل کنید.).

من خداییش تازه کارم 5 ماه C#‎ رو شروع کردم اما اونقدر میدونم که اون فایلی که در bin\debugهست بدون فایل های کتابخانه ای که هنگام نصبVS کپی میشه اجرا نمیشه
یعنی اون فایل روی سیستمی اجرا میشه که vs داشته باشه دوست عزیز

taze kar 1
چهارشنبه 23 اسفند 1391, 13:30 عصر
سلام.
وقتی برنامه اجرا میشه یک نسخه از پایگاه داده برنامه در پوشه دیباگ کپی می شود. و تمام تغییرات در پایگاه داده جدید اعمال می شود تا پایگاه داده برنامه از هرگونه تغییری در امان باشد.

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

daneshjo90
چهارشنبه 23 اسفند 1391, 13:31 عصر
من خداییش تازه کارم 5 ماه C#‎‎ رو شروع کردم اما اونقدر میدونم که اون فایلی که در bin\debugهست بدون فایل های کتابخانه ای که هنگام نصبVS کپی میشه اجرا نمیشه
یعنی اون فایل روی سیستمی اجرا میشه که vs داشته باشه دوست عزیز

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

برنامه هم زیاده برای ستاپ ساختن یه سرچ بزنی تو گوگل برات میاره

موفق باشی

taze kar 1
چهارشنبه 23 اسفند 1391, 13:36 عصر
برنامه رو تریس کن و ببین تغییرات توی دیتابیس ثبت میشه بعد اگر لازم شد نمونه کدی رو که نوشتی بزار تا بشه بررسی کرد
برنامه خطا نداره کامل اجرا میشه من بحثم رو پایگاه داده است شما باید یه برنامه با C# روی پایگاه داده نوشته باشی تا منظورمو متوجه شی .
C# یه پایگاه اولیه برای خواندن داده ها داره یه پایگاه داده خودش درست میکنه که تغییراتو ثبت میکنه حالا داده ها روی این بانکی که خودش درست میکنه ثبت میشه اما روی اون پایگاه اصلی ثبت نمیکنه یعنی دوباره که اجرا میکنی داده های پایگاه اصلی (log ) کپی میشه واسه این پایگاهی که داده ها روش ثبت شده و همه ی ذخیره هامون هیچ میشه
میخوام بدونم واسه این مشکل باید چیکار کرد؟

taze kar 1
چهارشنبه 23 اسفند 1391, 13:40 عصر
خب دوست عزیز شما که میگی اینطوری هستش و به گفته ی دوستان هم قانع نمیشه بهتره با برنامه های ستاپ ساز برای برنامه خودت یه ستاپ بسازی تا بدون نیاز به VS برنامه ات اجرا بشه

برنامه هم زیاده برای ستاپ ساختن یه سرچ بزنی تو گوگل برات میاره

موفق باشی
دوستان نا امیدم نکنید یعنی واقعا تو ایران کسی پیدا نمیشه که بدونه واسه حل این مشکل چه باید کرد؟:ناراحت:

mahdi-1
چهارشنبه 23 اسفند 1391, 14:24 عصر
ببین داش گلم
من همین الان این مشکل برام پیش اومد ولی حلش کردم.علت این که داده ها تو بانک ذخیره نمیشه اینه که:
--- داده ها در هنگام اجرا روی Ram هستند و اگر برنامه رو به صورت درست نبندی این داده ها ازبین میرن و توی دیسک ذخیره نمیشن
پس برنامه خودتو چک کن که مثلا یک فرم دیگری رو باز نکرده باشی .
چون اگه این کار رو کرده باشی و روی دکمه Close نوار عنوان کلیک کنی فرم بسته میشه ولی برنامه بسته نمیشه پس داده ها هم ذخیره نمیشن.:چشمک:

mhsmity
پنج شنبه 24 اسفند 1391, 00:52 صبح
ممنون از لطفت اما من میخوام واسه این برنامه setup بسازم یعنی میخوام بعنوان یه برنامه کامل بدم بیرون نمیتونم به بقیه بگم که این بانکو اینجا بذار اونو اونجا بذار
دوست عزیز چرا اینقدر این مسئله رو برای خودتون سختش کردین.
بنده با خود ویژوال استادیو برنامه رو ستاپ می کنم.
خیلی راحت همراه فایل اجرای فایل پایگاه داده و هر فایل اضافی دیگه ای که خواستم اد می کنم
به همین راحتی

veniz2008
پنج شنبه 24 اسفند 1391, 10:16 صبح
من خداییش تازه کارم 5 ماه C# رو شروع کردم اما اونقدر میدونم که اون فایلی که در bin\debugهست بدون فایل های کتابخانه ای که هنگام نصبVS کپی میشه اجرا نمیشه
یعنی اون فایل روی سیستمی اجرا میشه که vs داشته باشه دوست عزیز
من اگر حرفی میزنم قبلش اونو تست میکنم. بارها واسه برنامه هایی که ساختم و تحت شبکه بودن یک نسخه از فایل exe رو روی سیستم های کلاینت گذاشتم.
موفق باشید.

mhsmity
سه شنبه 20 فروردین 1392, 03:59 صبح
سلام
وقتی فرم بسته می شه می خوام فایل پایگاه داده رو یه جای دیگه کپی کنم ولی خطا می ده؟
متن خطا :
The process cannot access the file 'E:\Email Marketing V2.00\WindowsFormsApplication1\bin\Debug\Database1 .mdf' because it is being used by another process.
کد های مربوط به اتصال به بانک و واکشی اطلاعات:
Database1DataSetTableAdapters.Table1TableAdapter tbl = new WindowsFormsApplication1.Database1DataSetTableAdap ters.Table1TableAdapter();

و این کدها خطا دارد کپی و پست ساده هستش:
File.Copy(file1, newaddress + "\\Database1.mdf", true);
File.Copy(file2, newaddress + "\\Database1_log.ldf", true);

cherchil_hra
سه شنبه 20 فروردین 1392, 07:40 صبح
سلام دوستان
من برنامه هایی که با C#‎‎نوشتم طوریه که تغییراتی که در هنگام اجرای برنامه روی پایگاه داده اعمال میشه ذخیره میشه اما پس از اجرای مجدد برنامه داده ها از روی پایگاه داده اصلی لود میشه که تغییرات قبلی رو از بین می بره لطفا یه راهی بهم معرفی کنید که بشه این برنامه رو روی سیستمی که باید بحالت اجرایی(نه پروژه) اجراشه کار کنه یعنی بدون نیاز به vs
و تغییرات روی پایگاه داده پایدار بمونه


اگه توی سایت search می کردی به جواب می رسیدی. مشکل با ذخیره نشدن اطلاعات در دیتابیس (http://barnamenevis.org/showthread.php?307431-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%86%D8%B4%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3&p=1349664&viewfull=1#post1349664)
همانطور که دوستان گفتند هر دفعه در زمان اجرا فایل بانک شما در پوشه debug کپی میشه. برای همین تمام اطلاعات پاک میشه. بنابراین وقتی به پوشه دیباگ بری و فایل exe اجرا کنی، داده ها توی بانک هستند ولی وقتی برنامه رو دوباره اجرا کنی (از vs) همچی از نو میشه.
در نتیجه وقتی شما برنامه رو روی سیستم مشتری نصب کنید این مشکل وجود نخواهد داشت.
برای اینکه هر دفعه بانک کپی نشه : توی برنامه خاصیت Copy to Output بانکت رو از copy always روی گزینه copy if newer بذار

موفق باشید!

mhsmity
سه شنبه 20 فروردین 1392, 17:22 عصر
برای اینکه هر دفعه بانک کپی نشه : توی برنامه خاصیت Copy to Output بانکت رو از copy always روی گزینه copy if newer بذار

موفق باشید!
سلام ممنون.
گزینه copy if newer به درد نخورد
چون با Rebuild به حالت اول بر می گرده

omid.n1990
دوشنبه 14 مرداد 1392, 23:25 عصر
اینقدر زندگی رو سخت نگیر، مشکلی هست احتمالا شما دوباره برنامه رو کامپایل میکنی؟؟! خوب وقتی مجدد برنامه رو کامپایل کنی، اون پایگاه داده هم مجدد به روال قبلی اش برمیگرده، شما فقط فایل اجرایی برنامه ات رو اجرا کن