مقالات

اموزش--طراحی-سایت-asp.net-5

فوریه DataSet Object-قسمت 8 | اموزش طراحی سایت

بایکی دیگر از سری اموزش های طراحی وب سایت به زبان asp.net در خدمت شما هستیم.

برای عمليات Update ھم به ساگی با در دست داشتن انديس سطر مورد نظر و مقداردھی جديد به سطر ان کار تمام است:

در اينجا سطر دوم جدول را انتخاب کرده و آن را به يک متغير از نوع DataRow خالی نسبت می دھيم.سپس کافی است اين متغير را از نو مقدار دھی کنيم.اين کار را نيز می توان يک سره انجام داد که در کش کمی مشکل تر است:

برای  Delete  ھم کافی است از خاصيت  Delete متد  Tables.Rows استفاده کنيم.در زير ما سطر چھارم را پاک کرديم:

نکته ای که تا اينجا بايد به خاطر بسپاری اين است که اعمال بالا به صورت يک سره ھم قابل انجام ھستند ھمانطور که بيان شد و شما ھم سعی کنيد آن ھا را يک سره انجام دھيد.مثلا عمل Update را به صورت زير انجام دھيد:

قبل از بحث چگونگی Update شدن DataBase  بگذاريد با شی CommandBuilder آشنا شويم.اين شی ھمانطور که از نامش بر می آيد سازنده دستور است و چون در بحث Ado.NET مطرح شده سازنده ی دستورات عمومی Sql است. دستوراتی مثل Select-Update-Delete و….در مثال زير نمايش اين دستورات را می بينيم: ابتدا کد ھای عمومی کار:

سپس شی از نوع SqlCommandBuilder تعريف می کنيم ھمانطور که می بينيد new کردن آن مستلزم ورودی از نوع Dataadapter است تا ھم به Query String ان  دسترسی داشته باشد و ھم به Connection آن تا بتواند دستورات را بسازد:

به متد ھای SelectCommand-DeleteCommand-InsertCommand  شی SqlDataAdapter نيز بايد توجه شود. حالا برای توليد دستورا ت از متد Get شی SqlCommandBuilder استفاده میکنيم:

و برای نمايش به صورت زير عمل می کنيم:

اين کد ھا با توجه به Query String که مطرح شد دستورات مبنی بر Insert کردن و به روز يا حذف کردن جدول jj را توليد می کند زيرا وقتی شی SqlCommandBuilder تعريف شد و يک شی از نوع DataAdapter آرگومان ورودی تابع سازنده ی آن شد, اين شی به جدول مربوطه در پايگاه داه دسترسی دارد چون شی DataAdapter ھنم به رشته ی اتصال و ھم به QueryString ما دسترسی دارد پس می تواند با توجه به ستون ھای ان و عوامل ديگر کد ھای مربوزه را توليد کند. حتما از خود می پرسيد چرا اول ھمه ی دستورات توليد شده را در متد ھای شی SqlDataAdapter قرار داده ايم وسپس آن ھا را به وسيله ی متد ھای شی SqlDataAdapter چاپ کرديم.در حاليکه ميشد يک راست به صورت زير عمل کنيم:

پاسخ اين سوال کاملا واضح است.ما اين دستورات را توليد می کنيم تا در شی SqlDataAdapter از آن ھا استفاده کنيم مثلا ھر وقت برنامه نياز به Update شدن داشت به متد UpdateCommand از شی SqlDataAdapter رجوع شود.حال وقتی به ان رجوع شود بايد دستوری در آن باشد ديگر.پس نياز به اين داريم که ابتدا Command ھای توليد شده را درون متد ھای شی SqlDataAdapter قرار دھيم و سپس آن ھا را چاپ کنيم. حالا می ماند Update کردن DataSet که تغييرات مختلفی را روی آن انجام داديم.برای اين کار از متد Update شی DataAdapter  استفاده می کنيم که 2   آرگومان ورودی دارد يکی نام که مثلا تغييراتی مثل اضافه کردن سطر جديد-تغييرات در آن-حذف يک سطر رويش اعمال شده و ديگری نام جدولی که در پايگاه داده است و اين تغييرات بايد رويش اعمال شود.دقت کنيد اين متد بدون وجود دستورات مربوطه اين کار ھا را نمی کند که ما اين دستورات را با CommandBuilder توليد به متد ھای نظيرش در شی DataAdapter قرار داديم.اگر بدون انھا کد زير را بنويسيد ھيچ تغييری در پايگاه داده رخ نمی دھد: کد کامل تغييرات روی DataSet و اعمال آن به پايگاه داده ی اصلی را می بينيد:

ھمه ی تغييرات مرحله به مرحله ھر يک در يک GridView نمايش داده شده اند.نکته ھايی که می ماند اين است که شی CommandBuilder مورد پسند برنامه نويسان نيست چون ان ھا را به راحت طلبی وادار می کند ھمانطور که ديديد خودش کد توليد می کرد ولی کد ھای ساده! در کل برای سناريو ھای پيچيده نمی توان از CommandBuilder استفاده کرد و بايد تنبلی را کنار گذاشت و خود دست به کار شد و کد ھای Sql نوشت.اگر  دلتان نخواست که ازCommandBuilder استفاده کنيد کافی است جلوی خواصی  ھمچون  adap.InsertCommand خودتان دستی کد بنويسيد:

درک کد ھای توليد شده توسط CommandBuilder نيز ساده است کافی است در مثال CommandBuilder درک کد ھای توليد شده توسطبالا که آن ھا را نمايش داديم, کمی به کد ھای توليد شده بنگريد.در کل سعی کنيد ھنگامی که می خواھيد تغييرات انبوھی در پايگاه داده بدھيد از شی  DataSet استفاده کنيد ولی اگر تغييرات اندک ھستند از ھمان روش ھای قبلی استفاده کنید.

برای سفارش طراحی وب سایت با ما تماس بگیرید. 

اشتراک گذاری پست

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *