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

با سری اموزش های طراحی وب سایت الو وب در خدمت شما هستیم و ادامه قسمت 6 فوریه .

متغير Row ھم که در حلقه ی For تعريف شده بود.و ما از خاصيت GetChildRows از  آن در وب سایت  استفاده کرده ایم و آرگومان ورودی آن را که از نوع relation است را نام متغير (rel) قرار داديم و آن را درون متغيری از نوع DataRow قرار داديم البته از نوع ارايه ای چون GetChildRows چند سطر را برمی گرداند نه يک سطر.حالا اين چند سطر را با حلقه ی For وEach  نمايش می دھيم:

For Each childRow As DataRow In cr
<“Response.Write(childRow(“account_number”) & “<br

Next

(“dss.Tables(“branch”).Columns(“branch_name
(“dss.Tables(“account”).Columns(“branch_name”)
(dss.Relations.Add(rel
For Each row As DataRow In dss.Tables(“branch”).Rows
<“Response.Write(row(“branch_name”) & “<br>”)
(Dim cr As DataRow() = row.GetChildRows(rel
For Each childRow As DataRow In cr
<“Response.Write(childRow(“account_number”) & “<br>
Next
Next

در کل اگر کمی دقت کنيد می بينيد بسيار ساده است.دو خط اول که تعريف relation و Add کردن آن به DataSet بود.در حلقه ی For اول ھم تمام سطر ھا پيمايش می شد و در ھر پيمايش نام ستون Branch_name آن سطر چاپ می شد.سپس متد GetChildRows که متدی جزو ھمان سطری است که در حلقه ی بالاييش پيمايش شده ,تمام سطرھايی را که با ان سطر مورد نظر رابطه دارند را به وسيله ی آرگومان وروديش که ھمان رابطه بود پيدا می کند.سپس حلقه ی For داخلی سایت ھم آن ھا را نمايش می دھد.در حقيقت با توجه به جداول بالا ابتدا emam چاپ شده سپس با متد GetChildRows تمام سطر ھايی از جدول بعدی که با emam رابطه دارند (که سطر ھای ١و ٤و ٥) ھستند انتخاب شده و نمايش داده می شوند.

پس به آرايه بودن متغير cr از نوع DataRow دقت کنيد چون يک سطر نيست بلکه چند سطر است.سوالی که پيش می آيد اين است که کاربرد نام رابطه که در اينجا MyRelation  است کجاست؟

ما يک نام از نوع String به ان داديم و کاربردش در خود دستورات Sql است.جلوتر در قسمت DataView طرز کار و کاربرد ان را می بينيد. نتيجه ی يک رابطه ی معمولی را نمی توان به صورت عادی در GridView نمايش داد به ھمين دليل از دو حلقه ی For استفاده کرديم که با کمی تمرين و تکرار ملکه ی ذھنتان می شود .حتما تا اينجا با طرز کار WHERE در Sql آشنا شده ايد.شما با متد Select از شی DataTable می توانيد يک WHERE به Query خود اضافه کنيد .

البته نه در QuerySql بلکه در صفحه ی VB.NET رست است که اين متد عضوی از شی . DataTable است .ولی چون وظيفه اش انتخاب تعدادی سطر است مقدار باز گشتی ان از نوع DataRow می باشد.برای مثال فرض کنيد که کد ما به صورت زير باشد:

ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
(Dim con As New SqlConnection(cs)
(Dim adp As New SqlDataAdapter(“Select * From customer”, con)
Dim ds As New DataSet
(“adp.Fill(ds, “a”)
برای ايجاد متد Select کافيست در قسمت بعد از کلمه ی کليدی جای In به جای
(‘”ds.Tables(“a”).Select(“customer_city=’karaj
(“<Response.Write(dr(“customer_name”) & “<br>
(“<Response.Write(dr(“customer_street”) & “<br>
(“<Response.Write(dr(“customer_city”) & “<br>
(“<Response.Write(“=———————-=” & “<br>
در حقيقت ھمان عبارتی که می خواستيد در قسمت Where بنويسيد را در داخل متد Select نوشتيد.که در اينجا Query اصلی ما انتخاب کل جدول بود و با اين متد تنھا سطر ھايی که نام شھرشان کرج بود را انتخاب و سپس نمايش داديم. اين کار را می توانيد به صورت زير نيز انجام دھيد:
ds.Tables(“a”).Select(“customer_city=’karaj'”)
For Each dr As DataRow In mr
(“<Response.Write(dr(“customer_name”) & “<br
(“<Response.Write(dr(“customer_street”) & “<br
(“<Response.Write(dr(“customer_city”) & “<br
(“<Response.Write(“=———————-=” & “<br
ستفاده کرديم و تمام سطر DataRow در اينجا مثل مثال قبلی از يک ارايه از نوع ھايی که نام شھرشان کرج بود را انتخاب کرديم و سپس آن ھا را نمايش داديم.
ولی سعی کنيد از متد Select استفاده نکنيد.زيرا متدی است که اولا پارامتر ھا را پشتيبانی نمی کند و دوما راه را برای حملات تزريق Sql باز می گذارد.
ادامه این اموزش طراحی وب  با asp.net در پست بعدی منتشر خواهد شد.

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

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

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