PDA

View Full Version : افزودن رکورد به جداول بانك اطلاعاتي بوسيله ADO.Net در معماری سه لایه



ali_autumnal
چهارشنبه 10 شهریور 1389, 14:25 عصر
با سلام

مطلب زیر نوشته مهندس ابوذر نوذری از pdf مفاهیم معماری سه لایه هستش.

خواهش میکنم مطلب رو بخونید:




افزودن رکورد به جداول بانك اطلاعاتي بوسيله ADO.Net
فرآيند افزودن داده به يك جدول داراي مراحلي است كه وابستگي زيادي بين آنها وجود دارد.
بدين معنا كه انجام يك مرحله منوط به درست انجام شدن مرحله يا مراحل قبل است. براي اينمنظور مراحل زير بايد درنظرگرفته شده واجراشوند

1-يک کلاس DataTableمشابه نام جدول فيزيكي موجود درپايگاه داده ميسازيم.
2-آنرا به يك شيئ DataSet اضافه می کنيم
3-شيئ DataSet را ازداده هاي درون پايگاه داده پرميكنيم
4-يك شيئ جدید Row ازکلاس dataTable مشتق کرده و می سازیم.
5-ستونها يا به عبارت ديگر فيلدهاي آنرا باداده هاپرميكنيم
6-Row ايجادشده وپرشده رابه جدول اضافه ميكنيم
7-وقتيكه تمام رديفها به شكل فوق اضافه شدند،پايگاه داده رابوسيله تغيير شيئ DataTable به هنگام مينماييم

پروسه فوق،درقالب كد،روندي به شكل زيرخواهدداشت .





DataSet dset = new DataSet(tableName); //create the data set
dtable = new DataTable(tableName); //and a datatable
dset.Tables.Add(dtable); //add to collection
conn = db.getConnection();
openConn(); //open the connection
OleDbDataAdapter adcmd = new OleDbDataAdapter();
//open the table
adcmd.SelectCommand =
new OleDbCommand("Select * from " + tableName, conn);
OleDbCommandBuilder olecb = new OleDbCommandBuilder(adcmd);
adcmd.TableMappings.Add("Table", tableName);
//load current data into the local table copy
adcmd.Fill(dset, tableName);
//get the Enumerator from the Hashtable
IEnumerator ienum = names.Keys.GetEnumerator();
//move through the table, adding the names to new rows
while (ienum.MoveNext()) {
string name = (string)ienum.Current;
row = dtable.NewRow(); //get new rows
row[columnName] = name;
dtable.Rows.Add(row); //add into table
}
//Now update the database with this table
try {
adcmd.Update(dset);
closeConn();
filled = true;
}
catch (Exception e) {
Console.WriteLine (e.Message);
}



درتكه كدفوق،ماابتداجدول راازپايگاه داده واكشي نموديم،سپس تغييرات مورد نظر را روي آن انجام داديم. ودرآخرهم بوسيله به هنگام سازي تغييرات رابه پايگاه داده اعمال نموديم . شايان ذكر است كه براي ويرايش ياحذف يك رديف ازجدول نيز همين روند تكرار ميگردد.


سوال:
آیا این روش هرینه زیادی ندارد؟
یعنی اینکه مدام اطلاعات داخل این جدول را در DataSet کپی کنیم تا بتوانیم یک رکورد اضافه کنیم.
فرض کنید جدولی داریم با 750000 رکورد. همانطور که میدانید جستجوی رکوردی در این جدول کار آسانی نیست. یا کمترین زمان جستجو در داخل این جدول 1 دقیقه است. اگر بخواهیم مدام با این روش رکوردهایی را ایجاد ، حذف و یا ویرایش کنیم زمان زیادی را صرف خواهیم کرد. و مطمئنا هیچ کاربری حوصله کار با چنین دیتابیسی نخواهد داشت.

نظر شما چیه؟

متشکر
علی پاییزی

javad_r_85
چهارشنبه 10 شهریور 1389, 14:29 عصر
سلام با تشکر از مطلبتون اگر می شه فقط یه ذره خوانا تر می نوشتی اگرم کپی پیست کردی بین کلمات فاصله می زاشتی تا میشد راحت خوندش

ali_autumnal
چهارشنبه 10 شهریور 1389, 18:56 عصر
لینک دانلود pdf مربوطه:
http://www.barnamenevis.org/forum/showthread.php?t=243686