PDA

View Full Version : سوال: مشکل درج اطلاعات در database داخلی سی شارپ



abcd_a
سه شنبه 07 دی 1389, 20:13 عصر
با در ود خدمت دوستان


من یه برنامه نوشتم از دیتابیس داخلی سی شارپ استفاده کردم اما زمانی که برنامه را اجرا میکنم در زمان اجرا در دیتابیس عمل درج انجام میشه و اطلاعا ت اضافه شده رو هم نشون میده ولی بار بعدی که برنامه را اجرا میکنم هی چیزی به دیتا بیسم اضافه نشده ، داخل دیتابیس هم چک کردم چیزی اضافه نشده ، کسی می دونه مشکل چیه ؟

csharpprogramer88
سه شنبه 07 دی 1389, 20:38 عصر
سلام
سوال شما کمی گنگه
یعنی چی :
دیتابیس داخلی سی شارپ استفاده کردم

csharpprogramer88
سه شنبه 07 دی 1389, 20:45 عصر
سلام
سوال شما کمی گنگه
یعنی چی :
دیتابیس داخلی سی شارپ استفاده کردم

mtorabi
سه شنبه 07 دی 1389, 21:02 عصر
با در ود خدمت دوستان


من یه برنامه نوشتم از دیتابیس داخلی سی شارپ استفاده کردم اما زمانی که برنامه را اجرا میکنم در زمان اجرا در دیتابیس عمل درج انجام میشه و اطلاعا ت اضافه شده رو هم نشون میده ولی بار بعدی که برنامه را اجرا میکنم هی چیزی به دیتا بیسم اضافه نشده ، داخل دیتابیس هم چک کردم چیزی اضافه نشده ، کسی می دونه مشکل چیه ؟

دوست خوبم فکر کنم منظورت local databse باشه :)
دلیلش اینه که هر بار که شما پروژه ات را اجرا می کنی یک نسخه خالی از دیتابیست در پوشه bin به وجود می یاد طبعا اگه یه بار در حین اجرا داخلش چیزی هم وارد کنی در بار بعد مجددا نسخه خالی به جاش گذاشته می شه ...
نگران نباش این یه خطا نیست :چشمک:
اگه کلا می خوای دیتابیست مقادیر پیش فرض داشته باشه از طریق tab سرور اکسپلورر(ctrl+w , L) در دیتابیس مقدار وارد کنی
موفق باشی

abcd_a
سه شنبه 07 دی 1389, 21:36 عصر
سلام
سوال شما کمی گنگه
یعنی چی :
دیتابیس داخلی سی شارپ استفاده کردم

یعنی دیتابیسم داخل خود سی شارپ ایجاد کردم از اس کیو ال سرور 2008 به صورت جدا استفاده نکردم یعینی زمانی که برنامه را روی یه سیستم دیگه می برم نیازی به اتچ کردن نداره به قول دوستمون به صورت محلی اما موقعی که از اس کیو ال 2008 استفاده میکنم مشکلی پیش نمیاد

abcd_a
سه شنبه 07 دی 1389, 21:55 عصر
مقادریر پیش فرض را نشون میده ولی برنامه باید مقدار بگیره و در دیتابیس ذخیره کنه اما برنامه من مقدار میگیره ولی تو دیتابیسم ذخیره نمیشه کسی میدونه مشکل چیه ؟

abcd_a
چهارشنبه 08 دی 1389, 15:24 عصر
اگه کسی لطف کنه جواب بده ممنون میشم

Topcoding
چهارشنبه 08 دی 1389, 15:38 عصر
سلام دوست عزیز
نمی دونم این می تونه کمکت بکنه یا خیر
توی قسمت solution explorer روی فایل mdf. راست کلیک کرده و گزینه properties را انتخاب می کنی حالا گزینه copy to output را روی Do not copy قرار می دی

abcd_a
چهارشنبه 08 دی 1389, 16:09 عصر
دستت درد نکنه دوست عزیز امتهان کردم اما نشد

Topcoding
چهارشنبه 08 دی 1389, 16:54 عصر
ببینید دوست عزیز من الان توی قسمت server Explorer یک create new sql server database انتخاب کردم و توی قسمت server name دات(نقطه) ویه نام براش انتخاب کردم و یه دیتابیس ساخته شد وآن دیتابیس را باز کردم و در قسمت table راست کلیک و new tableرو انتخاب کردم و نام فیلدهام رو بهش دادم حالا یه آیتم sqldataAdapter را به فرمم اضاف کردم و همون دیتابیسی که ساختم رو بهش شاناسوندم و مراحلش رو تا انتخاب جدول رفتم و با راست کلیک روی همون آیتم sqldataAdapter که ساختم گزینه Generate Dataset رو انتخاب کردم و یه دیتاست هم ساختم حالا آیتم dataGridview رو به فرمم اضاف کردم و همان دیتاستی که ساختم رو بهش شناسوندم حالا دیگه یه دکمه که اطلاعات رو توی دیتابیس ذخیره کنه ایجاد کردم
این مراحل رو من انجام دادم و تونستم داده هایم رو به دیتابیسم اضاف کنم و دفعه بعدی برای اجرا اطلاعات قبلی وجود داشت
نمی دانم شما از این راه رفتید یا خیر

s3rv3r
چهارشنبه 08 دی 1389, 17:18 عصر
[SIZE="4"]منم همين مشكل رو دارم

اين كد منه

ايرادش چيه؟؟

چيكار كنم كلا ثبت بشه؟؟

SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
conn.ConnectionString = @"Data Source=.\SQLExpress;
AttachDBFilename=|DataDirectory|\DB.mdf;
Integrated Security=true;user instance =true";
conn.Open();
cmd.Connection = conn;
string sql = "INSERT INTO student (stu_code,stu_name,stu_famili)";
sql+=" values ( {0} , '{1}' , '{2}' )";
sql = string.Format(sql,
textBox1.Text,
textBox2.Text,
textBox3.Text);
cmd.CommandText = sql;
cmd.ExecuteNonQuery();

abcd_a
چهارشنبه 08 دی 1389, 19:39 عصر
ببینید دوست عزیز من الان توی قسمت server Explorer یک create new sql server database انتخاب کردم و توی قسمت server name دات(نقطه) ویه نام براش انتخاب کردم و یه دیتابیس ساخته شد وآن دیتابیس را باز کردم و در قسمت table راست کلیک و new tableرو انتخاب کردم و نام فیلدهام رو بهش دادم حالا یه آیتم sqldataAdapter را به فرمم اضاف کردم و همون دیتابیسی که ساختم رو بهش شاناسوندم و مراحلش رو تا انتخاب جدول رفتم و با راست کلیک روی همون آیتم sqldataAdapter که ساختم گزینه Generate Dataset رو انتخاب کردم و یه دیتاست هم ساختم حالا آیتم dataGridview رو به فرمم اضاف کردم و همان دیتاستی که ساختم رو بهش شناسوندم حالا دیگه یه دکمه که اطلاعات رو توی دیتابیس ذخیره کنه ایجاد کردم
این مراحل رو من انجام دادم و تونستم داده هایم رو به دیتابیسم اضاف کنم و دفعه بعدی برای اجرا اطلاعات قبلی وجود داشت
نمی دانم شما از این راه رفتید یا خیر

با تشکر فروان از شما دوست عزیز

من دیتا بیسم به روش زیر به پروژم اضافه می کنم فکر کنم با روشی که شما اضافه کردین فرق نداره چو ن در هر صورت دیتابس در پنجره server explorer اضافه میشه
solution Explorer -> myprojectName->rightClick->Add->new item ->data ->servic-based Database >mydataBaseName.mdf->Add

Topcoding
پنج شنبه 09 دی 1389, 11:50 صبح
ببینید دوستان @s3rv3r و @abcd_a :قلب:
من این راه رو پیشنهاد می کنم بیش از این هم دیگه بلد نیستم :خجالت: اگه حرفه ای ها علتش رو می دونند خوشحال می شیم بدونیم
من از روش@ abcd_a دیتابیسم رو ساختم و طبق پست 8# عمل کردم و کار دیگه که کردم رفتم سراغ پوشه پروژه ام کنار پوشه bin دو فایل از نوع mdf. و ldf. وجود داشت آنها رو کپی کردم و بردم به کنار exeبرنامه ام در مسیر
bin->Debug و انجا در کنار exe هر دو را قرار دادم و برنامه رو اجرا کردم این دفعه اطلاعات درج می شد و اطلاعات قبلی هم وجود داشت برای اطمینان اون فایل mdf. کنار exe را در sql server اتچ کردم و همان اطلاعاتی که ریخته بودم وجود داشت پس میشه گفت حله فقط توی جدول در قسمت server explorer چیزی اضافه نمی شود علتش هم به خاطر do not copy که در پست 8# گفتمه
(در ضمن اگه احیانا فایلهای دیتابیس کپی نمی شوند می تونید پروژه تان را ببندید و بعد کپی کنید یا سرویس های SQL رو STOP کنید)
امید وارم موفق باشید:قلب:

abcd_a
پنج شنبه 09 دی 1389, 17:33 عصر
ازدوستان کسی می دونه دیتابیسی که از روش زیر ا ضافه میشه چه مشکلی داره چرا داده های من در دیتابیسم ذخیره نمی شه ؟ چه تنظیماتی باید انجام بدم؟
(کدها مشکلی نداره برنامه هم هیچ خطایی نمیده، در پست اول مشکل را تو ضیح دادم )
solution Explorer -> myprojectName->rightClick->Add->new item ->data ->servic-based Database >mydataBaseName.mdf->Add

Topcoding
پنج شنبه 09 دی 1389, 18:06 عصر
ببخشید @abcd_a شما کارهایی که گفتم رو انجام دادید یعنی دیتابیستون رو do not copy کردید و دوتا فایل دیتابیس رو کنار exe برنامه تون کپی کردید و دوباره جواب نگرفتید آخه واسه من جواب می ده خیلی عجیبه

abcd_a
پنج شنبه 09 دی 1389, 18:25 عصر
ببخشید @abcd_a شما کارهایی که گفتم رو انجام دادید یعنی دیتابیستون رو do not copy کردید و دوتا فایل دیتابیس رو کنار exe برنامه تون کپی کردید و دوباره جواب نگرفتید آخه واسه من جواب می ده خیلی عجیبه

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

Topcoding
پنج شنبه 09 دی 1389, 19:05 عصر
شما از اول شروع کنید یه دیتابیس از همان روشی که گفتید رو بسازید قطعا کنارexe نخواهد بود اون دو تا فایل دیتابیس رو که کنار پوشه bin هست رو ببرید کنار exe برنامه و کپی کنید . حالا این کاری که می گم رو که خیلی مهمه انجام بدید
توی قسمت solution explorer روی فایل mdf. راست کلیک کرده و گزینه properties را انتخاب می کنی حالا گزینه copy to output را روی Do not copy قرار دهید پیش فرض copy alwase یعنی هرچی هم به دیتابیس اضافه کنید باز هم همان دیتابیس خالی که قبلا بوده را به جای جدید کپی می کنه که شما می بینید که هیچی اضافه نشده به خاطر همینه
حالا بعد از انجام این 2 کار برنامتون رو اجرا کنید که امیدوارم جواب بده

abcd_a
پنج شنبه 09 دی 1389, 22:39 عصر
با تشکر از شما دوست عزیز
بعد ا ز اینکه برنامه را اجرا کردی یه کپی از دیتابیست در پوشه دیباگ کنار فایل exe به صورت اتوماتیک درج میشه باور کن دو بار تست کردم هر دوبارش اضافه شده بود

درضمن موقعی که copy to outpu روی Do not copy میزارم error میده !

Topcoding
جمعه 10 دی 1389, 10:58 صبح
خب من پروژه ام رو گذاشتم تا از آن استفاده کنید هر جا مشکلی بود بگید تا انشاا.. مشکلاتان حل بشه
اول بگم که وقتی من دیتابیسم رو ساختم قبل از اجرا هر دوفایل دیتابیس کنار پوشه bin وجود داره و کنار exe نیست آنها را در آن محل کپی می کنم البته الان اجازه نمی ده که من پروژه ام رو ذخیره کردم و بستم و بعد توانستم کپی کنم این رو هم بگویم بعد از add کردن دیتابیس پنجره ای برای ساخت dataset آشکار می شود که یه دیتاست هم می سازم و بعد آن را باز کردم و جدولی که در دیتابیسم ساخته بودم رو روی آن درگ کردم و همان دیتابیس رو به dataGridview شناساندم و یه دکمه برای ذخیره اطلاعات قرار دادم و دستورات رو نوشتم
این رو هم بگویم که دیتابیس رو قبل از اجرا do not copy هم کردم حالا اجرا کردم که اجرا شد و یه داده در آن قرار دادم و بستم و دوباره اجرا کردم که داده قبلی وجود داشت و داده جدید رو پذیرفت بدون هیچ خطایی
البته توی جدول در قسمت server explorer هیچی اضافه نمی شه چون این دیتابیس مربوط به همان دیتابیسی هست که کنار پوشه bin وجود داره ولی ما با دیتابیسی کار می کنیم که در کنار exe برنامه قرار داره و اگه اون دیتابیس رو با sql server باز کنید می بینید که همان اطلاعات وجود داره
برو ببینم چیکار می کنی عزیز

abcd_a
جمعه 10 دی 1389, 13:08 عصر
در هر صورت بی نهای لطف کردی دوست عزیز
با آرزوی موفقیت

mojtabagm
سه شنبه 01 تیر 1395, 23:25 عصر
لطفا خودتونو تو لوپ نندازین
این کارو انجام بده مشکلت حل میشه

وی قسمت solution explorer روی فایل mdf. راست کلیک کرده و گزینه properties را انتخاب می کنی حالا گزینه copy to output را روی copy if newer قرار می دی