احتمالا منظورتون این تاپیکه و نمونه پروژه پیوستی
SampleDB.zip :
ارتباط دادن با ديتا بيس
قبل از هر چیز، جدول table را با اطلاعات موجود در بانک اطلاعاتی پر کنید تا برای دسترسی به اطلاعات سطر ها
آماده باشد :
کد:
MyDBDataSetTableAdapters.MyTBTableAdapter adapter
= new MyDBDataSetTableAdapters.MyTBTableAdapter();
MyDBDataSet.MyTBDataTable table
= new MyDBDataSet.MyTBDataTable();
adapter.Fill(table);
برای ویرایش کردن و یا حذف کردن یک یا چند سطر ابتدا بایستی آن سطر ها را به هر شیوه دلخواهی انتخاب کنید.
شیوه اول، با جستجو، مثلا تمامی سطر هایی که مقدار فیلد فلان شان بهمان باشد :
کد:
DataRow[] rows = table.Select("FirstName = 'ali'");
در مثال بالا ما سطر هایی را در rows انتخاب می کنیم که مقدار فیلد FirstName شان ali باشد.
اگر چنین سطر هایی وجود نداشته باشند rows خالی خواهد بود (هیچ سطری در آن قرار نمی گیرد).
در مثال زیر ما در rows فقط سطری را انتخاب می کنیم که مقدار فیلد ID اش برابر 6 باشد :
کد:
DataRow[] rows = table.Select("ID = '6'");
در مثال بالا اگر چنین فیلدی وجود نداشته باشد rows خالی خواهد بود (هیچ سطری در آن قرار نمی گیرد).
شیوه دوم، با شماره سطر ها، مثلا سطری که شماره اش n باشد:
کد:
DataRow row = table.Rows[0];
در مثال بالا ما سطر شماره 0 یعنی اولین سطر در جدول را در row انتخاب می کنیم.
شیوه سوم، حذف کردن مستقیم و بدون انتخاب کردن سطر :
برای حذف کردن مستقیم یک سطر بایستی مقدار تمامی فیلد های آن سطر را بطور کامل وارد کنید، مثلا :
کد:
adapter.Delete(6, "ali", "saeid");
توجه کنید که در کد بالا ما برای حذف کردن سطر از table استفاده ای نکرده ایم و مستقیما به adapter فرمان
حذف سطر را داده ایم. این شیوه برای حذف کردن یک سطر خاص مناسب است، هم کد اش کوتاه است و هم سریع.
شما هر شیوه دیگری غیر از شیوه سوم را که بکار ببرید بایستی سطر یا سطر های مورد نظر را انتخاب کرده باشید
تا در مرحله بعدی آن سطر یا سطر های انتخاب شده را حذف یا ویرایش کنید :
برای حذف کردن سطر هایی که در rows انتخاب شده اند می توانید از یک حلقه استفاده کنید :
کد:
for (int i = 0; i < rows.Length; i++)
rows[i].Delete();
adapter.Update(rows);
کد بالا با حالت خاصی که در rows هیچ سطری وجود نداشته باشد نیز مشکلی ندارد و خطا نمی دهد.
برای حذف کردن یک سطر که در row قرار گرفته (دقت کنید که rows یک آرایه بود، در حالی که row آرایه نیست)
می توانید از کد زیر استفاده کنید :
کد:
row.Delete();
adapter.Update(row);
برای ویرایش کردن محتویات یک یا چند فیلد در سطر یا سطر هایی که در rows انتخاب کرده اید می توانید از یک حلقه
استفاده کنید، مثلا در مثال زیر مقدار FirstName تمامی سطر های داخل rows به reza تغییر می کند :
کد:
for (int i = 0; i < rows.Length; i++)
{
rows[i].BeginEdit();
rows[i]["FirstName"] = "reza";
rows[i].EndEdit();
}
adapter.Update(rows);
برای ویرایش کردن محتویات یک یا چند فیلد در سطر داخل row از کد زیر استفاده کنید :
کد:
rows[0].BeginEdit();
rows[0]["FirstName"] = "babak";
rows[0].EndEdit();
adapter.Update(row);
در مثال بالا مقدار فیلد FirstName در سطر row به babak تغییر می کند.
اگر دقت کنید در انتهای تمامی کد های ویرایش و حذف (بجز روش سوم که مستقیم است) از فرمان adapter.Update
استفاده شده تا آداپتور تغییرات داخل table را در بانک اطلاعاتی ثبت کند. اگر آن را حذف کنید، تغییرات در حافظه RAM
و table رخ می دهند، اما در بانک اطلاعاتی هیچ تغییری رخ نمی دهد و با دسترسی مجدد به بانک اطلاعاتی
سطر های ویرایش یا حذف شده مجددا به وضع قبلش شان برگشت داده می شوند.