وارد کردن اطلاعات جديد با کنترل SqlDataSource

مقدمه :

در بخش های قبلی انواع عمليات های داده ای از جمله انتخاب ، ويرايش و فيلترينگ داده را شرح داديم . از عمليات های مهم ديگری که بايستی در يک پايگاه داده انجام شود ، وارد کردن اطلاعات و داده های جديد ( Insert Data ) و يا حذف برخی از اطلاعات مورد نظر ( Delete Data ) است . پايگاه های داده به مرور زمان تغيير کرده و گسترش می یابند و نياز است تا اطلاعات جديد به آنها وارد شوند . همچنين برخی از اطلاعات به مرور زمان بی اعتبار شده . بايد حذف شوند ، اينجاست که کاربر به مکانيزم هايي برای وارد کردن اطلاعات جديد و يا حذف اطلاعات قديمی نياز دارد .
در اين بخش با ارائه مثال هايي نحوه انجام عمليات های ورود و حذف داده در يک پايگاه داده را با استفاده از کنترل SqlDataSource را آموزش خواهيم داد . برای جلوگيری از تکرار برخی مطالب مشترک با قسمت های قبلی ( از جمله نحوه تعريف پارامترها در کنترل های داده و انواع متغيرهای مورد استفاده در صفحات ASP.NET ) در اين بخش به طور خلاصه تر به ارائه مطالب پرداخته و توصيه می کنم حتما ابتدا بخش های قبلی را مطالعه کرده و سپس مطالب اين بخش را بخوانيد .

وارد کردن اطلاعات جديد در پايگاه داده با استفاده از کنترل SqlDataSource :

کنترل SqlDataSource برای انجام عمليات ورود داده از يک دستور SQL از نوع Insert که در خاصيت InsertCommand آن تعيين می شود ، استفاده می کند . محتويات و تعيين دستور Insert مورد استفاده در اين خاصيت بستگی به پايگاه داده و ساختار و نوع ساختمان فيلد ها و رکوردهای جداول آن داشته و اينکه مقادير جديد برای وارد شدن بايد از طريق چه پارامترها و منابعی تامين شوند . برای آشنايي با ساختار دستور Insert در زبان SQL به بخش آموزش دستور Insert در زبان SQL برويد .
بنابراين برای انجام عمليات ورود داده ابتدا بايتسی دستور Insert را در خاصيت InsertCommand کنترل به طور کامل تعيين کنيد . دستور تعيين شده برای اين خاصيت هر بار که متد ( ) Insert کنترل SqlDataSource فراخوانی شود ، اجرا می گردد . نحوه فراخوانی اين متد را کمی جلوتر توضيح خواهم داد .
گام بعدی تعيين پارامترهايي است که بايد مقادير جديد را برای ورود به جدول ، تامين کنند . اصولا در اين حالت بايستی از يک يا چند کنترل کادر متن ( TextBox ) , و يا ساير کنترل های ممکن ديگر استفاده کرده تا کاربر بتواند مقادير جديدی که می خواهد به جدول اصافه کند را در اين کادرها وارد کرده و سپس عمليات Insert داده را انجام دهد .
برای مثال فرض کنيد که در جدول Students در پايگاه داده دانشگاه که در بخش های قبل استفاده کرديم ، کاربر بخواهد مشخصات نام و نام خانوادگی دانشجویان جدیدی که به دانشگاه آمده اند را به جدول بانک اطلاعاتی اضافه کند . در اين حالت کاربر بايد ابتدا نام ونام خانوادگی دانشجويان جديد را در کنترل هایی مثل کادر متن ( کنترل < asp:TextBox > ) وارد کرده و سپس اين مقادير جديد دريافتی را به عنوان پارامتر به کنترل SqlDataSource اراسال کند .
پار امترهای مورد استفاده در دستور InsertCommand را بايد در مجموعه < InsertParameters > کنترل که در درون تگ آن تعيين می شود ، قرار داد . در اين مجموعه بايستی به ازای هر عدد پارامتر استفاده شده ، يک تگ پارامتر را که شامل خصوصيات ، مکان و نحوه تعيين مقدار ، نوع و ... آن می باشد را قرار داد . برای دريافت اطلاعات راجع به نحوه تعيين و استفاده و همچنين انواع پارامترهای موجود در برنامه های ASP.NET به بخش استفاده از پارامترهای 1 , 2 برويد .
پس از تعيين دستور InsertCommand و مجموعه پارامترهای مورد نياز برای آن ، بايد کنترل هايي که قرار است مقادير جديد را به صورت ورودی از کاربر دريافت می کنند را بر روی صفحه قرار داد . همانطور که گفتم اين کنترل می توانند انواع گوناگونی داشته باشند ، از جمله کادر های متن و يا کادرهای انتخابی . بايد به تعداد لازم و با توجه به نوع پارامترها ، کننرل های مناسب را بر روی صفحه قرار داده و آنها را به پارمترهای مرتبط شان متصل کنيد .
مرحله بعدی فراخوانی متد ( ) Insert کنترل SqlDataSource است . اين متد است که در هنگام فراخوانی خود ، دستورات تعيين شده برای وارد شدن اطلاعات به منبع داده ای را اجرا می کند . برای فراخوانی اين متد می توان از روش های مختلفی استفاده کرد ، مثلا کد فراخوانی آن را در رويداد کليک يک دکمه فرمان ( کنترل < asp:Button > قرار داد و ... .
برای فراخوانی متد ( ) Insert يک کنترل SqlDataSource می توان از ساختار کلی زير استفاده کرد :

Syntax SqlDataSourceنام کنترل .Insert ( ) ;
مثال :   SqlControl1.Insert ( ) ;

مثال : در مثال زير ابتدا يک کنترل SqlDataSourec را به جدول Students در پايگاه داده دانشگاه متصل ساخته و سپس توسط يک دستور Insert موجود در خاصيت InsertCommand ، کنترل را برنامه ريزی کرده ايم که مقدار 4 فيلد اطلاعاتی شماره ( ID ) ، نام ( Name ) ، نام خانوادگی ( Family ) و نمره ( Grade ) يک دانشجو جديد را از طريق 4 کنترل کادر متن مرتبط دريافت کرده و آنها را به 4 پارامتر طراحی شده مرتبط به ترتيب ( Num , UName , UFamily , UMajor ) ارسال کند تا در دستور Insert مورد استفاده قرار بگيرد . سپس متد ( ) Insert کنترل SqlDataSource به وسيله کليک بر روی کنترل دکمه فرمان ( < asp:Button < ) و تحريک رويداد کليک آن ، اجرا شده و عمليات ورود اطلاعات به پايگاه داده را انجام خواهد داد .
برای کارایی اين مثال بايد ابتدا اطلاعات دانشجوی جديد مورد نظر خود را در کنترل های کادر متن وارد کرده و سپس بر روی دکمه فرمان Insert 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 "
InsertCommand="Insert Into Students ( ID , Name , Family , Major ) Values ( @Num , @UName , @UFamily , @UMajor )">

   <InsertParameters>
     <asp:ControlParameter   ControlID="txtName"   Name="UName" PropertyName="Text" />
     <asp:ControlParameter   ControlID="txtFamily"   Name="UFamily" PropertyName="Text" />
     <asp:ControlParameter   ControlID="txtNum"   Name="Num" PropertyName="Text" />
     <asp:ControlParameter   ControlID="txtMajor"   Name="UMajor" PropertyName="Text" />
   </InsertParameters>

</asp:SqlDataSource>

<asp:TextBox   runat="server"   ID="txtName"   Width="80px" />
<asp:TextBox   runat="server"   ID="txtFamily"   Width="80px" />
<asp:TextBox   runat="server"   ID="txtNum"   Width="80px" />
<asp:TextBox   runat="server"   ID="txtMajor"   Width="80px" />

<asp:Button runat="server"   ID="Btn" Text="Insert Data"   OnClick="Btn_Click" />
کد

نکته : همچنين بايد کد فراخوانی متد ( ) Insert کنترل SqlDataSource را در رويداد کليک دکمه فرمان Btn در فايل کد صفحه ASP.NET خود قرار دهيد :

protected void Btn_Click (object source, EventArgs e)
  {
    SqlData1.Insert( ) ;
  }
کد