PDA

View Full Version : سوال: برگرداندن تغییرات به دیتابیس



barnamenevisjma
چهارشنبه 29 تیر 1390, 00:53 صبح
با سلام
یه برنامه دارم برای ورود یه سری اطلاعات به دیتابیس. برای این منظور به windows form appliaction ساختم با یه datagridview. این برنامه داده های ذخیره شده در دیتابیس رو برای کاربر نشون می ده. حالا می خوام کاربر بتونه تو همین فرم، داده ها رو تغییر بده، یا رکورد(های) جدیدی اضافه کنه. سوال من اینه که چجوری باید این تغییرات رو به دیتابیس منعکس کنم.
ممنون میشم راهنماییم کنین.
با تشکر

centerpace
چهارشنبه 29 تیر 1390, 03:52 صبح
دقیقاً نمیدونم منظورتون چیه.برای تغییرات یا باید از دستورات SQLاستفاده کنید ویا ازابزارهای.NET مانند DataSet.
وبعد ازهر تغییرات باد Data Source دیتاگرید ویوو تون رو تغییر بدین تا تغییرات نمایش داده بشه.

Kubuntu
چهارشنبه 29 تیر 1390, 10:04 صبح
با استفاده از insert و update اونها رو اضافه و ویرایش میکنی.
می تونی یه BindingNavigator بذاریو به datagridview وصل کنی تا بین رکوردهای موجود در بانکت حرکت کنی!

پیشنهاد میکنم از روی کتاب یا سایت های انگلیسی یادبگیرید، طوری نیست که بشه از طریق تاپیک و پست بچه ها خوب یادگرفت. حتما باید کلاسها و فضای نامها رو خوب یاد بگیری تا بهترین کد رو بزنی. مثل dataset , sqlcommand, sqlDataAdapter, sqlconnection درکار باADO.NET . من با datagridview کار نکردم ولی ADO.NET رو پیشنهاد می کنم یادبگیرید. datagridview بیشتر حالت ویزاردی داره.

موفق باشی

barnamenevisjma
پنج شنبه 30 تیر 1390, 02:04 صبح
بزارید اینجوری براتون بگم:
فرض کنین یه برنامه شبیه به کتابخونه داریم و قراره یه نفر اطلاعات کتاب ها رو توی دیتابیس وارد کنه. برای این منظور یه فرم ساده می سازیم که:



Form frm_Main = new Form();
dgv = new DataGridView();
dgv.Dock = DockStyle.Fill;
dgv.AutoGenerateColumns = true;
this.Controls.Add(dgv);

DataSet ds = new DataSet();
string command = "SELECT * FROM BooksTable";
string connectionString = @"Data Source=Somewhere!\Library.sdf";
using (SqlCeConnection con = new SqlCeConnection(connectionString))
{
SqlCeDataAdapter da = new SqlCeDataAdapter(command, con);
da.Fill(ds, "MyBooks");
}
dgv.DataSource = ds;
dgv.DataMember = "MyBooks";



تا اینجا کاربر ما میتونه اطلاعاتی رو که قبلاً وارد کرده، ببینه. حالا فرض کنین میخوایم این کاربر بتونه اطلاعات قبلی رو ویرایش کنه و یا حتی بتونه اطلاعات – یا همون رکوردهای - جدیدی رو وارد کنه . یعنی:
1- بتونیم اطلاعات تغییر داده شده رو مشخص کنم و اونا رو به دیتابیس اصلی منعکس کنیم.

2- بتونیم رکورد های جدیدی که کاربر ایجاد کرده - ویا رکوردهایی رو که ممکنه حذف کرده باشن - رو مشخص کنیم و این اطلاعات رو هم در دیتابیس اعمال کنیم.
راستش چند سوال دیگه هم دارم:
سوال اول: اتصال DataGridView با DataSource – که حالا مثلا در این مساله، یه DataSet !- چجوریه؟ منظورم اینه که اتصال از نوع connectionless یا چیز دیگه ایه؟ به عبارتی آیا داده های تغییر داده شده در DataGridView بدون واسط و مستقیماً به DataSource اعمال میشه یا این اتصال مثل اتصال دیتابیس در ADO.Net از نوع ConnectionLess ؟
سوال دوم : چطور میتونم محتویات DataGridView رو refresh کنم تا اطلاعات دوباره از دیتابیس گرفته و نمایش داده بشه؟ اصلاً برای این کار DataGridView باید Refresh شه یا DataAdapter؟

منتظر راهنماییتون هستم.
با تشکر

barnamenevisjma
پنج شنبه 30 تیر 1390, 11:51 صبح
کسی راهنمایی نمیکنه؟

barnamenevisjma
پنج شنبه 30 تیر 1390, 13:19 عصر
راه بهتری سراغ ندارین؟ آخه نمیشه که هی DataSet ساخت و بعد با DataAdapter.Fill اونو پر کرد.!!! باید راه بهتری هم باشه!!

برای سایر قسمت ها راه حلی ندارین؟!!
ممنون از توجهتون.

Farshid007
پنج شنبه 30 تیر 1390, 13:58 عصر
من منظورتو فهمیدم :
یعنی تو اول دیتا گرید ویو رو از اطلاعات دیتا پر می کنی بعد کار بر اونا رو توی همون دیتا گرید ویو ویرایش می کنه بعد می خواهی تغییرات توی دیتا گرید ویو رو تو دیتا بیس ذخیره کنی
درسته؟

barnamenevisjma
پنج شنبه 30 تیر 1390, 17:21 عصر
دقیقاً. خوب راه حلتون چیه؟ البته میخوام داده های ویرایش شده، حذف شده و اضافه شده رو بطور مجزا داشته باشم.
راستی دو سوال آخر چی؟
با تشکر

Farshid007
پنج شنبه 30 تیر 1390, 19:25 عصر
به این یه نگاه بنداز:
http://www.codeproject.com/KB/database/DataGridView2Db.aspx
به دردت خورد؟

barnamenevisjma
پنج شنبه 30 تیر 1390, 19:59 عصر
چیز زیادی دستگیرم نشد. میشه بیشتر توضیح بدین؟
ممنون

Farshid007
پنج شنبه 30 تیر 1390, 20:05 عصر
زیاد تو این مورد کار نکردم
اما این کار خیلی واجبه پس میرم دنبالش!!!!!!!:عصبانی:

barnamenevisjma
شنبه 01 مرداد 1390, 10:10 صبح
دوستان دیگه راهنمایی نمیکنن؟

barnamenevisjma
یک شنبه 02 مرداد 1390, 09:34 صبح
چرا کسی جواب نمیده؟