PDA

View Full Version : گفتگو: DataSet



shima2006
جمعه 25 تیر 1389, 11:29 صبح
سلام دوستان
من دارم راجع به DataSet تحقیق می کنم ! من مطالبی رو که تویه این لینک و لینکهایه مرتبطش بود رو خوندم
http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx
از دوستانی که مطالب یا لینک مفیدی در این زمینه دارن خواهش می کنم اون رو در این جا قرار بدن ....
متشکرم

sds1920
جمعه 25 تیر 1389, 11:35 صبح
دیتاست کوچک شده دیتابیس شماست که داخل Ram قرار می گیره.اگه بگم که تمام امکانات دیتابیس رو داره شاید بیراه نگفته باشم.
شما داخل دیتاست می تونید جدول طراحی کنید,نوع فیلدها رو مشخص کنید و حتی می تونید ارتباط بین جداول رو تعیین کنید.

vahid.bz
جمعه 25 تیر 1389, 11:40 صبح
سلاميه اسلايد آموزشي دارم از ايگاه داده كه داخلش راجعبه پشت صحنه ي اون و dataset توضيحاتي داده

shima2006
جمعه 25 تیر 1389, 12:51 عصر
سلاميه اسلايد آموزشي دارم از ايگاه داده كه داخلش راجعبه پشت صحنه ي اون و dataset توضيحاتي داده

من یک فرم اصلی دارم که منویه برنامه در اون قرار داره ، این منو شامل 20 تا لینک به فرمهای مختلفه که هر کدوم از اونها با جداول مختلف در دیتابیس باید در ارتباط باشن.... من میخوام تویه این فرم اصلی (فرم منو) یک DataSet ایجاد کنم طوری که دیگه تویه هیچ کدوم از اون 20 تا فرم نیاز به ایجاد DataSet جدید نباشه...
این اسلاید آموزشی یه کدی نوشته بود به این شکل:




daCustomers = New SqlDataAdapter ("select * from Customers", conn1)
daCustomers.Fill(ds, "Customers")


daOrders = New SqlDataAdapter ("select * from Orders", conn2)
daOrders.Fill(ds, "Orders")

به نظرم این کد وقتی کارایی داره که بخواهیم از چند تا جدول در یک فرم استفاده کنیم ، نه برای استفاده از چندین جدول در چندین فرم ... درسته؟!

shima2006
شنبه 26 تیر 1389, 06:07 صبح
دوستان کسی نمیدونه برای این منظور (که در بالا توضیح دادم) چطور باید از DataSet استفاده کرد؟

mmd2009
شنبه 26 تیر 1389, 06:14 صبح
با سلام

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

shima2006
شنبه 26 تیر 1389, 06:35 صبح
با سلام

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

سوال من دقیقا همینه....چطوری میتونم تمامی اطلاعات مربوط به دیتا بیس رو درون یک دیتاست قرار بدم؟!

alireza_s_84
شنبه 26 تیر 1389, 07:28 صبح
سوال من دقیقا همینه....چطوری میتونم تمامی اطلاعات مربوط به دیتا بیس رو درون یک دیتاست قرار بدم؟!
خب اولا واقعا کار غیر اصولیه که شما تمامی اطلاعات دیتابیس رو درون دیتاست قرار بدید. و به هیچ وجهی قابل توجیه نیست.
ثانیا دیتاست دقیقا مثل یک دیتابیس متشکل از جدواله پس به ازای هر جدول در دیتابیس شما یک DataTable در دیتاست ایجاد کنید. بعد میتونید در هنگام نیاز هر کدوم از این DataTable ها رو پر کنید.
ضمنا میتونید بصورت RunTime یک DataTable ایجاد کنید و به مجموعه جدولهای دیتا ست خودتون اضافه کنید.
موفق باشید.

mmd2009
شنبه 26 تیر 1389, 07:49 صبح
من یک مثال براتون زدم و توضیحات رو هم میدم حالا اگر دوستان روش بهتری دونستن بگن و شما هم از این روش استفاده نکن.

ببینید من یک کلاس ایجاد کردم که همچین کدهای داخلش قرار داره :





DataSet ds = new DataSet();
public string table="";
public DataSet DS
{
get { return (ds); }
set { ds = value; }
}
string address_db = @"Data Source=CODENAME\MMDSQL;"+
"Initial Catalog=mmd;Integrated Security=True";
public void coonect()
{
SqlConnection con = new SqlConnection(address_db);
SqlDataAdapter dba = new SqlDataAdapter
("select * from "+ table +"", con);
dba.Fill(ds);
}



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

شیوه استفاده هم به صورت زیر است

تو رویداد فرم لود اینو می نویسم :





dataset_for_allfrom dfa = new dataset_for_allfrom();
dfa.table = "t1";
dfa.coonect();
dg1.DataSource = dfa.DS.Tables[0];



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

این برنامه رو هم براتون گذاشتم و تو بانک دوتا جدول به نام های t1 و t2 ایجاد کردم البته دیگه بانکش رو نذاشتم

امیدوارم مفید باشه و اگر هم نبود دوستان روش های بهتری بگن

mmd2009
شنبه 26 تیر 1389, 08:04 صبح
البته میشه کلاس رو هم اینطوری تعریف کرد





public DataSet ds = new DataSet();
public string table="";

string address_db = @"Data Source=CODENAME\MMDSQL;"+
"Initial Catalog=mmd;Integrated Security=True";
public void coonect()
{
SqlConnection con = new SqlConnection(address_db);
SqlDataAdapter dba = new SqlDataAdapter

("select * from "+ table +"", con);
dba.Fill(ds);
}



و اینطوری معرفی کرد :





dataset_for_allfrom dfa = new dataset_for_allfrom();
dfa.table = "t1";
dfa.coonect();
dg1.DataSource = dfa.ds.Tables[0];