حذف اطلاعات مورد نظر با استفاده از کنترل SqlDataSource
حذف اطلاعات :
همانطور که در مقدمه اشاره کرديم ، معمولا برخی از اطلاعات بانک های اطلاعاتی با گذشت
زمان بی اعتبار شده و ديگر نيازی به آنها نيست و بايد به طريقی از جداول اطلاعاتی حذف
شوند . بنابراين در هنگام کار با يک کنترل داده SqlDataSource ، بايد اين امکان وجود
داشته باشد که بتوانيم اطلاعات مورد نظر خود را از پايگاه داده حذف کنيم .
کنترل SqlDataSource برای حذف اطلاعات از يک جدول بانک اطلاعاتی متصل به آن ، از يک
دستور Delete به زبان SQL که در خاصيت DeleteCommand آن تعيين می شود ، استفاده می
کند . شما بايستی با توجه به ساختار بانک اطلاعاتی خود و اينکه چه فيلد يا رکوردهایی
را در آن می خواهيد حذف کنيد ، يک دستور Delete به زبان SQL را در خاصيت DeleteCommand
کنترل قرار دهيد . برای آشنايي با ساختار دستور Delete در زبان SQL می توانيد به بخش آموزش دستور Delete در زبان SQL
برويد .
اين دستور هر بار که کنترل بخواهد از جدول بانک اطلاعاتی داده هایی را حذف کند و یا
متد ( ) Delete آن به طريقی فراخوانی شود ، خواند شده و اجرا می گردد .
نکته : همچنين می توان از توابع آماده ( Stored Procedure ) در دستور
Delete کنترل استفاده کرد . در اين حالت ابتدا بايد تابع را طراحی کرده و آن را نام
گذاری کنيد . سپس مقدار خاصيت DeleteCommand کننرل را با نام تابع آماده طراحی شده
مورد نظر مقدار دهی کرد و همچنين مقدار خاصيت DeleteCommandType کنترل را بر روی Stored
Procedure تنظيم کنيد . استفاده از اين روش را در مثال شماره 2 اين بخش نشان خواهم
داد .
استفاده از پارامترها در دستور Delete خاصيت DeleteCommand :
معمولا هنگامی که می خواهيم اطلاعاتی را از يک جدول بانک اطلاعاتی حذف کنيم ، بايد
مقدار يک يا چند فيلد رکورد يا رکوردهای مورد نظر را به عنوان نشانه و آدرس ، برای
یافتن رکوردهای مورد نظر به دستور Delete خاصيت DeleteCommand کنترل SqlDataSource
ارسال کنيم . مثلا فرض کنيد که در جدول Students پايگاه داده دانشگاه ، می خواهيم اطلاعات
دانشجویانی را حذف کنيم که رشته تحصيلی آنها سخت افزار ( HardWare ) است . بنابراين
بايد به روشی مقدار فيلد رشته تحصيلی ( فيلد Major ) را که برابر با مقدار ( HardWare
) است را از طريق يک پارامتر به دستور Delete کنترل ارسال کنيم . در اين جاست که بايد
از پارامترها استفاده کرد . معمولا برای دريافت مقادير فيلدها از کنترل هایی مثل کنترل
های کادر متن ( < asp:TextBox > ) در صفحات ASP.NET استفاده می شود . کاربر بايد
مقادير لازم برای فيلدها جهت يافتن رکوردهای مورد نظر ، را در کنترل های مربوط وارد
کرده و سپس عمليات حذف را با فراخوانی متد ( ) Delete کنترل SqlDataSource انجام دهد
.
چنانچه از پارامترهایی در دستور Delete خاصيت DeleteCommand کنترل استفاده کنيم ، بايد
آنها را در مجموعه پارامترهای عمليات حذف داده کنترل که با تگ < DeleteParameters
> در درون تگ کنترل مشخص می شوند ، تعيين کرد . در اين مجموعه به ازای هر عدد پارامتر
استفاده شده ، يک تگ پارامتر تعيين کرده و مشخصات لازم برای آن را از جمله محل تامين
داده ، نوع و ... را مشخص سازيم . برای دريافت اطلاعات راجع به نحوه تعيين و استفاده
و همچنين انواع پارامترهای موجود در برنامه های ASP.NET به بخش
استفاده از پارامترهای 1 , 2 برويد .
پس از اينکه پارامترهایی که می خواهيم در دستور DeleteCommand استفاده کنيم را تعيين
کرديم ، بايد کنترل های لازم را برای دريافت مقادير پارامترها را بر روی صفحه قرار
دهيم . سپس بايستی به يک روش ، متد ( ) Delete کنترل را فراخوانی کنيم . برای اين منظور
می توان به روش های مختلفی عمل کرد که در اينجا يک نمونه را مثال می زنيم . می توان
کد فراخوانی متد ( ) Delete را در رويداد کليک يک دکمه فرمان ( کنترل < asp:Button
> ) قرار دهيم ، که با هر بار کليک کاربر بر روی آن ، آن رويداد اجرا شده و متد
( ) Delete فراخوانی می شود .
شکل کلی فراخوانی متد ( ) Delete يک کنترل SqlDataSource به صورت زير است :
|
Syntax
|
SqlDataSourceنام کنترل .Delete ( ) ;
مثال : SqlControl1.Delete ( ) ;
|
برای درک بهتر مطالب ذکر شده به يک مثال اشاره می کنيم .
مثال : در مثال زير يک کنترل SqlDataSource را به پايگاه داده دانشگاه
( UniverCity ) متصل کرده ايم . اين کنترل دارای يک دستور Delete است که آن را در خاصيت
DeleteCommand آن تعيين کرده ايم . اين دستور برای حذف اطلاعات رکورد مربوط به يک دانشجوی
مورد نظر در هر لحظه استفاده می شود . برای اينکه تعيين کنيم که از جدول بانک اطلاعاتی
Students در پايگاه داده دانشگاه در هر لحظه مشخصات چه دانشجویی حذف شود ، مقدار نام
و نام خواندگی آن دانشجو را به وسيله دو پارامتر D_Name و D_Family که به ترتيب مقادير
خود را از دو کنترل کادر متن Name و Family دريافت می کنند ، به دستور Delete کنترل
ارسال می کنيم . سپس به وسيله رويداد کليک دکمه فرمان Delete Data
متد ( ) Delete کنترل اجرا شده و رکورد دانشجویی تعيين شده حذف خواهد شد .
برای کارایی اين مثال بايد ابتدا اطلاعات نام و نام خواندگی دانشجویی که می خواهيد
رکورد آن را حذف کنيد را در کنترل های کادر متن وارد کرده و سپس بر روی دکمه فرمان
Delete Data کليک کنيد :
< asp:SqlDataSource runat="server" ID="SqlData1"
ConnectionString="data source = Developer-PC; initial catalog = UniverCity ; Integrated
Security = True " ProviderName="System.Data.SqlClient" SelectCommand="Select
* From Students "
DeleteCommand = " Delete From Students Where Name = @D_Name AND Family
= @D_Family " >
<DeleteParameters>
<asp:ControlParameter ControlID="txtName"
Name="D_Name" PropertyName="Text" />
<asp:ControlParameter ControlID="txtFamily"
Name="D_Family" PropertyName="Text" />
</DeleteParameters>
</asp:SqlDataSource>
<asp:TextBox runat="server" ID="txtName"
Width="80px" />
<asp:TextBox runat="server" ID="txtFamily" Width="80px"
/>
<asp:Button runat="server" ID="Btn" Text="Delete Data"
OnClick="Btn_Click" />
|
نکته : همچنين بايد کد فراخوانی متد ( ) Delete کنترل SqlDataSource
را در رويداد کليک دکمه فرمان Btn در فايل کد صفحه ASP.NET خود قرار دهيد :
protected void Btn_Click (object source, EventArgs e)
{
SqlData1.Delete( ) ;
}
|