فوریه DataSet Object | قسمت 8

ادامه قسمت 7 فوریه DataSet Object  از اموزش طراحی وب سایت با asp.net :

دليلی ندارد که شما نتوانيد در توابع و کلاس ھا مقدار برگشتی از نوع DataSet و DataTable نداشته باشيد.حتما ميدانيد در طراحی وب  برای برگشت داده ھای انبوه ھميشه مقدار برگشتی شما از نوع DataReader  بوده است ولی آيا اين کار در کلاس ھا و توابع ھم کاربرد دارد؟اگر داده ی برگشتی ما از نوع DataReader باشد آن وقت تا وقتی DataReader قابل استفاده در وب سایت است که Connection باز باشد.آيا ما می توانيم اينقدر Connection را باز نگه داريم؟بدون شک نه.ما در مثالی که در زمينه ی Component  زديم و يک کلاس کامل ايجاد کرديم جای متدی به نام GetAllEmployee خالی بود.اين متد می توانست به صورت زير  ايجاد گردد:

Public Function GetAllEmployees() As SqlDataReader
(Dim con As SqlConnection = New SqlConnection(connectionString
cmd.CommandType = CommandType.StoredProcedure
Try
()con.Open
()Dim reader As SqlDataReader = cmd.ExecuteReader
Return reader
Catch err As SqlException
(“Throw New ApplicationException(“Data error
Finally
End Try
End Function

اين متد ھيچ ايراد دستوری ندارد.و داده ی برگشتی از نوع SqlDataReader دارد که در بيرون کلاس می توان از آن استفاده کرد.در اين کد ذر بلوک Finally جای Con.Close خالی است.زيرا اگر باشد ديگر داده ی SqlDataReader وقتی Connection بسته باشد معنی نخواھد داشت.از طرفی اگر Connection باز ھم باشد آنقدرکارايی سيستم پايين می آيدکه حد ندارد.پس اينجاست که DataSet و DataTable به کار ما می آيد.در کلاس زير متد GetAllEmployee داده يبرگشتی از نوع DataSet به کار ما می آيد.در کلاس زير متد GetAllEmployee داده يبرگشتی از نوع DataSet دارد در حاليکه Connection بسته است .

Imports Microsoft.VisualBasic

Imports System.Data
Imports System.Data.SqlClient
Public Class Class1
Private cs As String =
ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
()Public Sub New
cs = ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
End Sub
Public Function GetAllEmployees() As DataTable
(Dim con As New SqlConnection(cs
Dim sql As String = “Select” * from employees
(Dim da As New SqlDataAdapter(sql, con)
()Dim ds As New DataSet
Try
(“da.Fill(ds, “Employees
(“Return ds.Tables(“Employees
Catch
(“Throw New ApplicationException(“Data error
End Try
End Function
End Class

و نحوه ی استفاده از اين کلاس نيز بسيار ساده است:

Dim j As New Class1
Dim k As New DataTable
()k = j.GetAllEmployees
GridView1.DataSource = k
()GridView1.DataBind

ايجاد تغييرات در :DataSet تا حالا ھر چه گفتيم در مورد نمايش داده با DataSet بود.در حالی که شما می توانيد در DataSet تغييرات ايجاد کنيد و حتی اين تغييرات رابه پايگاه داده اعمال کنيد.حالا کمی در مورد تغييرات روی DataSet کار کنيم مثل  Delete- Update و..

ھمه ی اين تغييرات را در يک مثال انجام می دھيم.ابتدا کد زير را بنويسيد jj. نام جدول ماست که حاوی ٣ ستون است. ١-شناسه (کليد اصلی) -نام ٣-نام خانوادگی:

Dim cs As String
Dim qs As String
Dim con As SqlConnection
Dim ds As DataSet
Dim adap As SqlDataAdapter
cs = ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
(con = New SqlConnection(cs

“qs = “Select * From jj
(adap = New SqlDataAdapter(qs, con
ds = New DataSet
(“adap.Fill(ds, “jj
(“GridView1.DataSource = ds.Tables(“jj
()GridView1.DataBind

 

 

برای اضافه کردن يک سطر جديد به جدول DataSet بايد از خاصيت newRow شی DataTable استفاده کرد.برای اين کار ابتدا متغيری از نوع DataRow و DataTable تعريف می کنيم:

Dim NewRow As DataRow
Dim table As DataTable

 

سپس جدول موجود در DataSet را به متغيری که از نوع DataTable تعريف کرده بوديم نسبت می دھيم:

(“table = ds.Tables(“jj

سپس از خاصيت newRow شی DataTable استفاده می کنيم و آن را درون متغيری که از نوع DataRow ايجاد کرده بوديم می ريزيم:

NewRow = table.NewRow

يعنی در حقيقت با اين کد يک سطر جديد وخالی برای جدول خود ايجاد کرديم.در نھايت ھم مقادير آن را تعيين می کنيم:

NewRow.Item(“e_id”) = 11
“NewRow.Item(“e_fname”) = “ahmad
“NewRow.Item(“e_lname”) = “rezaali

در نھايت آن را به سطر ھای شی DataTable اضافه می کنيم:

(table.Rows.Add(NewRow

اين کار را يک سره و بدون متغيراز نوع DataTable ھم می توان انجام داد:

NewRow = ds.Tables(“jj”).NewRow

يک سطر ديگر ھم اضافه می کنيم:

NewRow1 = table.NewRow
NewRow1.Item(“e_id”) = 12
“NewRow1.Item(“e_fname”) = “shahla
“NewRow1.Item(“e_lname”) = “mosadegh
(table.Rows.Add(NewRow1

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

(“GridView2.DataSource = ds.Tables(“jj
()GridView2.DataBind

ادامه فوریه DataSet Object در طراحی سایت در پست بعدی منتشر خواهد شد.

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

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

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