Data Adapter
DataAdapter သည် .Net ၏ disconnected data access ပိုင်းတွင် အဓိကအကျဆုံးအခန်း ဂဏ္ဌာမှပါဝင်သည်။ Database နှင့် DataSet အကြားတွင် ပေါင်းကူး (middleman) အဖြစ် ဆောင်ရွက် ပေးပါသည်။
DataAdapter ကိုသုံးမည်ဆိုပါက ပထမဦးဆုံး သူ့တွင်ပါဝင်သော Fill method ဖြင့် DataTable သို့မဟုတ် DataSet ထဲသို့ လိုအပ်သည့် data များကိုထည့်ပေးရသည်။ Insert/Update/Delete လုပ်ရန်အတွက် Memory ထဲတွင် ရှိသော Data များကို သက်ဆိုင်ရာ Command များအရင်ပေးရပါမည်။ ပြီးနောက် Database သို့ Commit လုပ်ရန် Update method ကိုခေါ်ရမည်ဖြစ်သည်။ Database ကိုခိုင်းစေရန်အတွက် DataAdapter တွင် properties ၄ ခုရှိပါသည်။
- SelectCommand
- InsertCommand
- DeleteCommand
- UpdateCommand
အထက်ပါလိုအပ်သော Method ကိုသုံးပီး Update method ကို ခေါ် ပေးပါက Database သည် မိမိခေါ်ဆိုသည့် အတိုင်း Data များကို ပြုပြင်ပေးပါသည်။
အောက်ပါပေးထားတဲ့ဥပမာကို အလုပ်လုပ်နိုင်ရန်အတွက် ပထမဦးဆုံး System.Data, System.Configuraion, System.Data.SqlClient တို့ကို Reference လုပ်ပါမယ်။
using System.Configuration; using System.Data.SqlClient;
Connection ပိတ်တာကို သေချာစေချင်တဲ့အတွက်ကြောင့် Using Block ထဲကနေပြီး Connection ကိုဖွင့်ထားပါတယ်။ Coding တွေ အားလုံး တွက်ချက်ပြီး သွားတာနဲ့ Connection Auto ပိတ်သွားနိုင်အောင် Using Block ကတာဝန်ယူပါတယ်။ ConnectionStrings["myCrmDB"] ကို ခေါ်သုံးထားပါတယ်။ ဥပမာတွေထပ်ကုန်မှာဆိုးလို့ Connection ခေါ်သုံးပုံးသုံးနည်း အသေးစိတ်ကို Configuring Connection Strings မှာ ကြည့်ပါ။ Database ကိုဝင်မပြင်ခင် DataSet ထဲကို Data တွေ အရင် Load လုပ်ပေးရပါမယ်။
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCrmDB"].ToString()))
{
DataRow drCurrent;
SqlDataAdapter daEmployees = new SqlDataAdapter("SELECT * FROM tblEmployees", connection);
DataSet dSetEmployees = new DataSet("dsEmployees");
daEmployees.FillSchema(dSetEmployees, SchemaType.Source, "dtEmployees");
daEmployees.Fill(dSetEmployees, "dtEmployees");
DataTable tblEmployees = dSetEmployees.Tables["dtEmployees"];
Record အသစ်ထည့်ခြင်း
Database ထဲကို ပုံစံမျိုးစုံနဲ့ record အသစ်ထည့်ပေးနိုင်ပါတယ်။ ဒီဥပမာမှာတော့ အဆင့် လေးဆင့်ထဲနဲ့ data အသစ်ထည့်ပေးပါမယ်။
- DataRow Object အသစ်ကို DataTable ထဲကနေယူပါတယ်။
- လိုအပ်တဲ့ Data တွေကို DataRow ထဲထည့်ပေးပါမယ်။
- DataTable.Rows collection ရဲ့ Add method ထဲကို ခုနက DataRow object ကိုထည့်ပေးလိုက်ပါ။
- ပြီးတော့ DataAdapter မှာ Update method ကိုခေါ်ပေးပါ။
ဒါဆိုရင် Database ထဲကို Record အသစ်ဝင်သွားပါပီ။ ဒီ Employee table မှာ Primary Key ကို Identity Increment (Database မှာ ကိုယ် Primary Key ပေးချင်တဲ့ field ရဲ့ Column Properties မှာ Identity Specification ကို Yes ပေးပါ။) ပေးထားတဲ့အတွက် Primary Key အတွက် ထည့်စဉ်းစားပေးစရာ မလိုတော့ဘဲ ကိုယ်ကြေငြာခဲ့တဲ့ pattern အလိုက် PK key value အသစ် ထုတ်ပေးပါတယ်။
//Adding New Record drCurrent = tblEmployees.NewRow(); drCurrent["FirstName"] = "Phyu Sin"; drCurrent["LastName"] = "Thant"; tblEmployees.Rows.Add(drCurrent); daEmployees.Update(dSetEmployees, "dtEmployees");
Record ကိုပြင်ခြင်း
ကိုယ်ပြင်ချင်တဲ့ Record ကိုအရင်ဆုံး ရှာပါမယ်။ Row Collections မှာပါတဲ့ Find method ဟာ PK(Primary Key) value ကိုသွားရှာမှာဖြစ်ပြီး ဒီဥပမာမှာ FillSchema ကိုသုံးထားတဲ့အတွက် Table ရဲ့ PK Field ကို Auto သိနေပါတယ််။ ကိုယ်ရှာချင်တဲ့ value ကိုထည့်ပေးပါ။ အလိုအလျောက် PK field ကိုထောက်ပြီး ရှာပေးပါတယ်။ အဲဒီ့နောက် DataRow ကိုလိုအပ်သလိုပြင််ပါ။ Database ထဲကို Data တွေ Submit လုပ်ချင်တယ်ဆိုရင်တော့ DataAdapter ရဲ့ Update method ကိုခေါ်ပေးပါ။ မခေါ်ခင်မှာ DataAdapter ရဲ့သက်ဆိုင်ရာ InsertCommand, UpdateCommand နဲ့ DeleteCommand ကို SetUp လုပ်နိုင်သလို Visual Studio မှာရှိတဲ့ SqlCommandBuilder ကိုသုံးလို့လည်းရပါတယ်။ သူဟာ သက်ဆိုင်ရာ Command တွေကို အလိုအလျောက် Generate လုပ်ပေးပါတယ်။ SqlCommandBuilder ကိုသုံးဖို့အတွက် table မှာ PK key information ကိုဖော်ပြပေးဖို့လိုတယ်။ FillSchema ကိုခေါ်သုံးထားတဲ့အတွက် Table မှာ PK key information ရှိပြီးသားဆိုတော့ PK အတွက် ဘာမှ လုပ်ပေးစရာ မလိုတော့ပါဘူး။ ကိုယ်ပြင်မဲ့ PK value “3” ဟာ table မှာ ရှိကြောင်း သေချာနိုင်ရန် အတွက် Null မဟုတ်ကြောင်း အရင်စစ်ပေးပါ။
SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daEmployees);
//Updating Exiting Record
drCurrent = tblEmployees.Rows.Find(2);
if (drCurrent != null)
{
drCurrent.BeginEdit();
drCurrent["FirstName"] = "Shin";
drCurrent.EndEdit();
daEmployees.Update(dSetEmployees, "dtEmployees");
}
Record ကိုဖျက်ခြင်း
ကိုယ်ဖျက်ချင်တဲ့ DataRow Object မှာ Delete function ကိုခေါ်ပေးလိုက်ရုံပါပဲ။ ပြီးတော့ DataAdapter ရဲ့ Update function ကိုခေါ်ရပါမယ်။ SqlCommandBuilder ကိုတော့ ခုနကတည်းကတည်းက initialized လုပ်ပြီးသွားပါပြီ။ Database ထဲကို Update လုပ်ဖို့s Update method ကို Insert/Update/Delete တွေအားလုံးအတွက်တခါတည်းပေါင်းခေါ်လို့လဲရပါတယ်။ ဒီမှာတော့ Find method ကိုခေါ်မသုံးတော့ပဲ Table မှ Rows ရဲ့ Index ကိုသုံးပြီးသက်ဆိုင်ရာ Record ကိုရယူပါတယ်။ ကိုယ်ဖျက်မဲ့ Record ဟာ table မှာ ရှိကြောင်း သေချာ နိုင်ရန်အတွက် Record အရေအတွက်နှင့် နှိုင်းယှဉ်ပြီးစစ်ဆေးပေးပါမယ်။
//Deleting Exiting Record
if (tblEmployees.Rows.Count > 5)
{
drCurrent = tblEmployees.Rows[4];
drCurrent.Delete();
daEmployees.Update(dSetEmployees, "dtEmployees");
}
ပြင်ပြီးသမျှ အသစ်ထည့်ပြီးသမျှ တွေအတွက် Client မှကြည့်ရန် DataGridView ကိုခေါ်သုံးထားပါတယ်။
//Update GridView myGridView.DataSource = dSetEmployees; myGridView.DataBind();
DataGrid ကို ဒီလို ကြေငြာ ထားပါတယ်။
<asp:GridView runat="server" ID="myGridView" CellPadding="2" CellSpacing="2"> <AlternatingRowStyle BackColor=GreenYellow /> </asp:GridView>
Coding အပြည့်အဆုံကိုအောက်မှာ Download လုပ်နိုင်ပြီး Employee table script ကို Database folder ထဲကနေ ယူနိုင်ပါတယ်။
Dowload Code Here
Facebook comments:



