ကြၽန္ေတာ္တို႔ DataBase ေဆာက္လို႔ ၿပီးၿပီဆိုေတာ့ အခု program နဲ႔ ခ်ိတ္ပါ့မယ္။ web application နဲ႔ database ခ်ိတ္ၿပီး data input/output လုပ္ဖို႔အတြက္ နည္းလမ္းေတြ အမ်ားႀကီးရွိပါတယ္။ အဲ့ဒီထဲကမွ ကြၽန္ေတာ္အခု ObjectDataSource သံုးၿပီး ခ်ိတ္ဆက္ျပပါမယ္။ ObjectDataSource သံုးမယ္ဆိုရင္ အလြယ္ဆံုးနည္းကေတာ့ DataSet နဲ႔ တြဲၿပီးသံုးတဲ႔ နည္းပဲ ျဖစ္ပါတယ္။ DataSet ေဆာက္တာကို အရင္ပိုဒ့္ေတြမွာ ကြၽန္ေတာ္ရွင္းျပၿပီးသားျဖစ္တဲ႔အတြက္ အခုကြၽန္ေတာ္ အၾကမ္းပဲ ေျပာသြားပါ့မယ္။
Dataset Creation Process
၁ – solution explorer ထဲက project name ကို right click လုပ္ၿပီး ‘Add new items’ ကိုႏွိပ္လိုက္ပါ။ ေပၚလာတဲ႔ window ထဲမွာ DataSet ကိုေရြးၿပီး Add လုပ္လိုက္ပါ။ ( App_Code ထဲကို ထည့္မလား ေမးရင္ ထည့္မယ္လို႔သာ ေျပာလိုက္ပါ။ )
၂ – Dataset ရၿပီးရင္ ToolBox ထဲကေန TableAdapter ေဆာက္ပါ။ TableAdapter ေဆာက္ရင္ ပထမဆံုး Database နဲ႔ connection ယူရပါတယ္။ ( ပထမဆံုး တစ္ႀကိမ္မွာ new connection ယူၿပီး save ထားလိုက္ရင္ ေနာက္အႀကိမ္ေတြမွာ new connection ယူစရာ မလိုေတာ့ပါဘူး၊ Auto ေရြးေပးပါလိမ့္မယ္။)
၃ – connection ရၿပီဆိုရင္ SQL Statement ကိုေရြးၿပီး ေနာက္တစ္ဆင့္မွာ ကြၽန္ေတာ္လိုခ်င္တဲ႔ Table ကိုေရြးၿပီး select query ေရးေပးရပါမယ္။ (ဒီေနရာမွာ တစ္ခုသတိထားဖို႔လိုတာက TableAdapter ေဆာက္တဲ႔ အခ်ိန္မွာ ေရးတဲ႔ ပထမဆံုး select query မွာ (1) All Column(*) ကိုပဲေရြးပါ။ (2) Table မ join ပါနဲ႔။) ဘာလို႔လဲ ဆိုေတာ့ Table join လုိက္ရင္ Insert, Update, Delete Query ေတြကို compiler က auto မေဆာက္ေပးေတာ့ပါဘူး။ Search Page ေတြ၊ List Page ေတြအတြက္ Table Join ဖို႔လိုအပ္ရင္ ေနာက္မွ New Query ယူၿပီး Select လုပ္ပါ။ ပထမဆံုး Query မွာေတာ့ Table မ Join ပါနဲ႔။ အေရးႀကီးတာ တစ္ခု ေျပာဖို႔ က်န္ေသးတယ္။ ကြၽန္ေတာ္တို႔ Database ထဲမွာ table ေတြ ေဆာက္တုန္းက Primary Key ေပးဖို႔လည္း မေမ႔ခဲ႔ပါနဲ႔ဦး။ အကယ္လို႔ primary key မေပးထားခဲ႔ဘူးဆိုရင္ TableAdapter ေဆာက္တဲ႔ အခ်ိန္မွာ Insert Query ပဲ ေရးေပးသြားပါလိမ့္မယ္။ Update နဲ႔ Delete ေတာ့ ေဆာက္ေပးမွာ မဟုတ္ပါဘူး။
၄ – ကြၽန္ေတာ္တို႔ေရးလိုက္တဲ႔ select query အတြက္ function name ေပးရတဲ႔ ေနရာမွာ ကိုယ္ႀကိဳက္တဲ႔ name ေပးလိုက္လို႔ ရပါတယ္။ default အေနနဲ႔ Fill နဲ႔ GetData ဆိုၿပီး function ၂ ခု ေဆာက္ေပးပါလိမ့္မယ္။ ကြၽန္ေတာ္တို႔ မသံုးခ်င္တဲ႔ function ကို ျဖဳတ္ထားလို႔လဲ ရပါတယ္။ Fill function နဲ႔ GetData function ဘာကြာလဲဆိုရင္ ေအာက္မွာ ျပထားတဲ႔ နမူနာ usage ေလးကို ၾကည့္လိုက္ရင္ ရွင္းသြားမွာပါ။
Fill Function Usage
DataSetName ds = new DataSetName(); // data သိမ္းမယ့္ dataset ကို object ေဆာက္ပါတယ္။
TableAdapterName adp = new TableAdapterName(); // function(query) ရွိတဲ႔ Table adapter ကို object ေဆာက္ပါတယ္။
adp.Fill (ds.DataTableName); // Fill function က data သိမ္းမယ့္ dataset ကို parameter အေနနဲ႔ ထည့္ေပးရတယ္။
GetData Function Usage
DataSetName ds = new DataSetName();
TableAdapterName adp = new TableAdapterName();
ds.DataTableName.Merge( adp.GetData() ); // GetData Function ကေတာ့ datatable return ျပန္ၿပီး အဲ့ဒါကို ကိုယ္သိမ္းမယ့္ datasetထဲက table ထဲကို ေပါင္းထည့္ေပးရပါတယ္။
မွတ္ခ်က္။ ။ Database ထဲက table ေတြအတြက္ dataset ေဆာက္တဲ႔ အခါမွာ DataSet ကို တစ္ခုထဲေဆာက္ၿပီး အဲ့ဒီထဲမွာ table တစ္ခုစီအတြက္ TableAdapter တစ္ခုႏႈန္းနဲ႔ TableAdapter ေတြ အမ်ားႀကီးေဆာက္လို႔လည္း ရပါတယ္။ (ဒါမွမဟုတ္) table တစ္ခုအတြက္ DataSet တစ္ခုႏႈန္းနဲ႔ DataSet ေတြ အမ်ားႀကီး ေဆာက္ၿပီးေတာ့ သံုးလည္းရပါတယ္။
pic1
ဒါေလးက ကြၽန္ေတာ္စက္မွာ ေဆာက္ၿပီးသြားတဲ႔ Dataset နဲ႔ TableAdapter ေတြပဲ ျဖစ္ပါတယ္။
ေက်းဇူးတင္ပါတယ္.. ကၽြန္ေတာ္ မသိတာေတြ သိသြားပါတယ္..
Comment by ကိုေဇာ္ — April 4, 2010 @ 1:40 AM