بانک اطلاعاتی Contact :

Data set نمونه :

فرم وب WebForm2.aspx : ( شامل DataGrid ، سه Button و اشياء لازم به منظور ارتباط با بانک اطلاعاتی )

تنظيم خصلت های DataGrid :

اجرای اوليه WebForm2.aspx :

اضافه نمودن رکورد
برای افزودن يک رکورد به Data Set ، می بايست يک شی جديد Row ، ايجاد و در ادامه آن را به مجموعه Rows مربوط به شی DataSet اضافه نمود. کد زير، نحوه انجام عمليات فوق را نشان می دهد :
|
VB.NET ::Add Record
|
|
Private Sub butAddRow_Click (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butAddrow.Click
Dim rowNew As DataSet1.ContactRow = DataSet11.Contact.NewRow
rowNew.Fname = "مديريت سايت "
rowNew.Lname = "مديريت سايت "
rowNew.Email = "Info@Srco.ir"
DataSet11.Contact.Rows.Add(rowNew)
End Sub
|
پس از فعال نمودن ( کليک ) دکمه "اضافه نمودن رکورد" ، يک سطر با اطلاعات فوق به Dataset اضافه شده و در ادامه بهنگام سازی بانک اطلاعاتی از طريق DataSet
می شود.

ويرايش يک رکورد
برای تغيير يک سطر در Data Set ، در ابتدا با استفاده از متد FindBy سطر مربوطه را پيدا نموده ( بر اساس يک کليد جستجو که معمولا" فيلدی است که در بانک اطلاعاتی به عنوان "کليد اوليه " ، تعريف شده است ) و در ادامه می توان تغييرات دلخواه را بر روی فيلدهای اطلاعاتی ، اعمال نمود( فيلد ID به عنوان DataKeyField در DataSet تعريف شده است ) .کد زير، نحوه انجام عمليات فوق را نشان می دهد :
|
VB.NET ::Update Record
|
|
Private Sub butChangeRow_Click (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butChangeRow.Click
Dim rowChange As DataSet1.ContactRow
rowChange = DataSet11.Contact.FindByID("2")
rowChange.Fname = "ايران"
End Sub
|
در مثال فوق ، سطری که دارای ID با شماره 2 می باشد ، با استفاده از متد FindBy پيدا شده و در ادامه فيلد Fname آن به " ايران" ، تغيير داده می شود. پس از اجرای برنامه و فعال نمودن دکمه " ويرايش رکورد " ، تغييرات در DataSet اعمال و در ادامه بهنگام سازی بانک اطلاعاتی از طريق DataSet
می شود.

حذف رکورد
برای حذف يک سطر در Data Set ، در ابتدا با استفاده از متد FindBy يک سطر از جدول را در اختيار گرفته و در ادامه با استفاده از متد Delete مربوط به شی Row آن را حذف می نمائيم .کد زير، نحوه انجام عمليات فوق را نشان می دهد :
|
VB.NET :: Delete Record
|
|
Private Sub butDeleteRow_Click (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles butDeleteRow.Click
Dim rowDelete As DataSet1.ContactRow
rowDelete = DataSet11.Contact.FindByID("9")
rowDelete.Delete()
End Sub
|
در مثال فوق ، سطری که دارای ID با شماره 9 می باشد ، با استفاده از متد FindBy ، پيدا شده و در ادامه امکان حذف آن با استفاده از متد Delete ، فراهم می گردد. پس از اجرای برنامه و فعال نمودن دکمه " حذف رکورد " ، تغييرات در DataSet اعمال و در ادامه بهنگام سازی بانک اطلاعاتی از طريق DataSet
انجام می شود.

بهنگام سازی بانک اطلاعاتی از طريق DataSet
با استفاده از متد Update مربوط به Adapter می توان اقدام به بهنگام سازی بانک اطلاعاتی از طريق شی DataSet نمود.عمليات فوق، معمولا" پس از پردازش تمامی رويدادهای کنترل بر روی صفحه انجام می شود ، بنابراين می توان متد Update را از طريق رويداد Page_PreRender فعال نمود ( فراخوانی ).
|
VB.NET :: Update Database From DataSet
|
|
Private Sub Page_PreRender (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles MyBase.PreRender
SqlDataAdapter1.Update(DataSet11)
End Sub
|
ADO.NET در زمان بهنگام سازی يک بانک اطلاعاتی از طريق Data Set ، عمليات زير را انجام می دهد:
- تشخيص تغييرات بر روی Data Set با بررسی خصلت RowState مربوط به هر يک از اشياء DataRow
- فراخوانی InsertCommand,DeleteCommand و يا UpdateCommand مربوط به شی Adapter به منظور اعمال تغييرات لازم دربانک اطلاعاتی
- Reset نمودن خصلت های RowState بهنگام شده مربوط به اشياء DataRow به UnChanged
خصلت های InsertCommand,DeleteCommand و UpdateCommand مربوط به شی Adapter به صورت اتوماتيک و از طريق شی SelectCommand ايجاد می گردند(زمانی که Data Set از طريق يک Adapter ( در حالت Design ) ايجاد می گردد). هر يک از خصلت های فوق ، يک شی OleCommand و يا SqlCommand را ارائه می نمايند . اشياء Command دارای خصلت های زير می باشند که نحوه اجرای Command را مشخص می نمايند .
-
خصلت CommandText شامل عبارت SQL و يا نام Stored Procedure به منظور اجرای دستور است.
-
خصلت CommandType نحوه اجرای دستور را با استفاده از تنظيمات زير مشخص می نمايد :
مقدار Text ، باعث اجرای دستور به عنوان يک عبارت SQL می گردد ( مقدار پيش فرض )
مقدار StoredProcedure ، باعث اجرای دستور به عنوان يک Stored Procedure در بانک اطلاعاتی می گردد .
مقدار TableDirect ، باعث برگرداندن تمامی جدول می گردد . تنظيم فوق صرفا" در رابطه با OLE DB.NET استفاده می شود ( Data Provider )
می توان محتوی DataSet و نحوه بهنگام سازی داده را با تغيير عبارت SQL استفاده شده توسط اين اشياء ، انجام داد .
به منظور مشاهده و يا تغيير دستورات فوق ، مراحل زير را دنبال می نمائيم :
- در پنجره Properties ، بر روی خصلت Command مورد نظری که قصد تغيير آن را داريم ، کليک می نمائيم. ( Double-Click )
- خصلت CommandText را برای Command انتخاب و در ادامه با کليک نمودن بر روی دکمه مربوطه ( Ellipsis ) ، جعبه محاوره ای Query Builder نمايش داده می شود.

- انتخاب ستون هائی که قصد استفاده از آنان در Command را داريم ( فعال نمودن Check Box ) ويا تايپ مستقيم عبارت SQL پانل مربوط به Command .

ايجاد يک ارتباط با بانک اطلاعاتی در زمان اجراء
ايجاد اشياء مربوط به داده در حالت Design روشی مناسب برای فراگيری نحوه دستيابی داده توسط ADO.NET می باشد، چراکه ويژوال استوديو دات نت ، به صورت اتوماتيک اشياء Connection و Adapter را ايجاد می نمايد . برخی از تتظيمات مربوط به خصلت ها نظير ConnectionString پيچيده بوده و ايجاد آنان بدون کمک Design mode امری مشکل به نظرمی آيد. پس از ايجاد يک Connection در حالت Design ، می توان با استفاده از عمليات Copy&Paste، تنظيمات مربوط به خصلت را به منظور ايجاد Connection مشابه در کد مورد نظر،استفاده نمود . دستيابی به اشياء داده از طريق کد، مشابه مراحل گفته شده برای دستيابی به داده در حالت Design می باشد :
- مرحله اول : ايجاد شی Connection
- مرحله دوم : ايجاد يک شی Adapter
- مرحله سوم : ايجاد يک شی Data Set
- مرحله چهارم : فراخوانی متدها بر روی شی Adapter به منظور پرنمودن و يا بهنگام سازی Data Set
- مرحله پنجم : استفاده از فرآيند نسبت دهی داده و يا روش های ديگر به منظور نمايش داده از طريق Data Set
کد زير اشياء داده را ايجاد و داده موجود در يک بانک اطلاعاتی SQL را نمايش می دهد :
|
VB.NET ::Create data objects&Display data
|
|
Private Sub Page_Load (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles MyBase.Load
|
|
مرحله اول : ايجاد Connection
|
|
Dim sqlConnectContactMgmt As New SqlConnection ("Server=(local) ; database=Contact;Trusted_Connection=yes"
|
|
مرحله دوم : ايجاد يک Data Adapter
|
|
Dim sqladapterContactMgmt As New SqlDataAdapter("Select * From Contact",SqlConnectContactMgmt)
|
|
مرحله سوم : ايجاد يک Data Set
|
|
Dim dsContacts As New DataSet( )
|
|
مرحله چهارم : پر نمودن Data Set
|
|
sqladapterContactMgmt.Fill ( dsContacts , "Contact")
|
|
مرحله پنجم : نمايش اطلاعات در يک Data Grid
|
|
DataGrid1.DataSource = dsContacts.Tables("Contact").DefaultView
DataGrid1.DataBind( )
End Sub
|
بهنگام سازی بانک اطلاعاتی در زمان اجراء
همانگونه که اشاره گرديد ، ADO.NET از خصلت های DeleteCommand,InsertCommand و UpdateCommand مربوط به شی Adapter برای بهنگام سازی بانک اطلاعاتی از طريق Data Set استفاده می نمايد . زمانی که يک Adapter در زمان اجراء ايجاد می گردد ، می بايست خصلت های فوق را در ابتدا ايجاد تا امکان فراخوانی متد Update مربوط به شی Adapter فراهم گردد . برای ايجاد خصلت های فوق در زمان اجراء مراحل زير را دنبال می نمائيم :
-
مقداردهی مناسب شی SelectCommand مربوط به Adapter . تکنولوژی ADO.NET از خصلت CommandText مربوط به شی SelectCommand برای ايجاد تنظيمات لازم در ارتباط با خصلت های InsertCommand,DeleteCommand و UpdateCommand استفاده می نمايد .
-
ايجاد يک شی Command Builder برای شی Adapter . شی Command Builder به نوع Data Provider بستگی دارد : OleDbCommandBuilder و SqlCommandBuilder .
کد زير نحوه بهنگام سازی يک بانک اطلاعاتی را نشان می دهد :
|
VB.NET ::Updating DataBase
|
|
Private Sub Page_Load (ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles MyBase.PreRender
|
|
مرحله اول : ايجاد Connection
|
|
Dim ContactMgmt As New SqlConnection ("Server=(local) ; database=Contact;Trusted_Connection=yes"
Dim adapterContactMgmt As New SqlDataAdapter("Select * From Contact",ContactMgmt)
|
|
مرحله دوم : ايجاد يک Data Set
|
|
Dim dsContacts As New DataSet( )
adapterContactMgmt.SelectCommand.CommandText = "SELECT * FROM Contact"
|
|
مرحله سوم : ايجاد دستورات Insert ,Delete و Update بصورت اتوماتيک
|
|
Dim CmdContanctMgmt As SqlCommandBuilder = New SqlCommandBuilder ( adapterContactMgmt )
|
|
مرحله چهارم : ايجاد يک Row جديد
|
|
Dim rowInsert As DataRow = dsContacts.Tables("Contact").NewRow
RowInsert("Fname") = "مديريت سايت "
RowInsert("Lname ") = "مديريت سايت"
RowInsert("Email ") ="Info@Srco.ir"
dsContacts.Tables ("Contact") .Row.Add(RowInsert)
|
|
مرحله پنجم : بهنگام سازی بانک اطلاعاتی
|
|
adapterContactMgmt.Update(dsContacts.Tables("Contact")
|
|
End Sub
|
در بخش سوم اين مقاله با نحوه استفاده از Data Set در فرم های وب ،آشنا خواهيم شد.