SlideShare a Scribd company logo
1 of 42
Download to read offline
DataSet


Suan Dusit Rajabhat University, Phitsanulok Campus
                           Mr.Warawut Khangkhan
DataSet
 ●
     DataSet คอ ออบเจกตทถอไดวาเปนหวใจของ
     ADO.NET สาหรบการเขาถ!งขอม#ลแบบ
     Disconnected เนองจากออบเจกตน&ใชเกบขอม#ลท
     โปรแกรมด!งมาจากฐานขอม#ล โดยการทางานกบ
     ขอม#ลใน DataSet จะมร#ปแบบเปนเช,งสมพนธ
     (Relational) เหมอนการทางานกบฐานขอม#ลโดยตรง
     แตเปนอ,สระจากฐานขอม#ล
 ●
     DataSet ยงสามารถใชเกบขอม#ลทอานมาจากเทกซ
     ไฟล (Text File) หรอแหลงขอม#ลแบบ XML ไดดวย
K.Warawut              DataSet                    2
โครงสรางการทางานของออบเจกต
                DataSet
                            DataTable Object
                            DataColumn Object
                            DataRow Object




K.Warawut         DataSet                       3
DataTable Object
 ●
     คอ ตวแทนของแตละ table ใน DataSet
 ●
     Table จะถ#กรวบรวมไวในคอลเลคชน
     DataTableCollection ซ!งเขาถ!งไดโดยเรยกใชพรอพ
     เพอรต& Tables ของ DataSet (Default)

        For Each tb As DataTable In ds.Tables
           TextBox1.Text &= tb.TableName & ControlChars.CrLf
        Next




K.Warawut                       DataSet                        4
DataColumn Object
 ●
     โครงสรางของแตละ table จะถ#กกาหนดโดย
     คอลเลคชน DataColumnCollection ซ!งบรรจ1ออบ
     เจกต DataColumn ไว
 ●
     DataColumn คอ ตวแทนของ field หน!งๆ โดยเกบ
     ค1ณสมบต,ตางๆ เกยวกบ field น&นไว เชน ชอฟ4ลด
     และชน,ดขอม#ลของฟ4ลด เปนตน




K.Warawut               DataSet                   5
DataColumn Object (Cont.)
 ●
     สามารถเขาถ!งคอลเลคชน DataColumnCollection
     ไดโดยเรยกใชพรอพเพอรต& Columns ของ
     DataTable

For Each f As DataColumn In ds.Tables(“Emp”).Columns
   TextBox1.Text &= f.ColumnName & “: “ & f.DataType.ToString & _
                       ControlChars.CrLf
Next


     DataColumn Object จะเกบคณสมบตเกยวกบฟลด แตไมไดเกบขอมลในฟลดไว
             การเขาถ%งขอมลในฟลดจะตองใช DataRow Object

K.Warawut                       DataSet                            6
DataRow Object
 ●
     DataTable จะเกบขอม#ล record ตางๆ ไวใน
     คอลเลคชน DataRowCollection ซ!งบรรจ1ออบเจกต
     DataRow ไวต&งแต 0 ออบเจกตข!&นไป โดยแตละออบ
     เจกต คอ ตวแทนของ record หน!งๆ
 ●
     การเขาถ!งคอลเลคชน DataRowCollection ใหใช
     พรอพเพอรต& Rows ของ DataTable สวนการเขาถ!ง
     ขอม#ลแตละ field ใน record ใหใชพรอพเพอรต& Item
     ของ DataRow โดยระบ1ชอ field เปนอารก,วเมนต


K.Warawut                DataSet                 7
DataRow Object (Cont.)

   For Each row As DataRow In ds.Tables(“Emp”).Rows
      TextBox1.Text &= row.Item(“Firstname”) & ControlChars.CrLf
   Next


 เน(องจากพรอพเพอรต* Item เป,น Default Property ของ DataRow
 ดงน*นแทนทจะเขยนวา
     row.Item(“Firstname”)
 อาจเขยนส*นๆ ได
     row(“Firstname”)


K.Warawut                     DataSet                              8
การเพ,มขอม#ลเขาไปใน DataSet
●
    การเพ,มขอม#ลเขาไปใน DataSet คอ การเพ,ม record
    ใหมเขาไปยง table ใน DataSet ซ!งทาไดโดยเรยก
    เมธอด NewRow ของ table (DataTable Object) ท
    ตองการเพ,ม record เขาไป เมธอดน&จะสราง
    ออบเจกต DataRow ข!&นมาใหมและสงคน (Return)
    ออบเจกตน&นกลบมาให ดงน&นตองประกาศตวแปร
    ออบเจกตชน,ด DataRow เพอรบคาจากเมธอด แลว
    กาหนดขอม#ลลงใน field ตางๆ ของ record ผานทาง
    ตวแปรดงกลาว ส1ดทายใหเพ,มออบเจกต DataRow
    เขาไปในคอลเลคชน DataRowCollection ของ
    table
K.Warawut               DataSet                  9
ตวอยาง การเพ,มขอม#ลเขาไปใน
               DataSet
'ประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSet
Dim tb As DataTable = ds.Tables(“Emp”)
'สรางเรคอรดใหมทมโครงสรางของฟ4ลดตางๆ ตามทกาหนด
'โดยเทเบ,ล Emp แลวใชตวแปร row อางอ,งไปยงเรคอรดใหมน&น
'(เรคอรดใหมยงไมถ#กเพ,มเขาไปในเทเบ,ล Emp)
Dim row As DataRow = tb.NewRow( )
'กาหนดคาใหกบฟ4ลดตางๆ         ถาตองการใหเพมลงในฐานขอมลจรงๆ
row(“FirstName”) = “วราว1ฒ,” ตองใชเมธอด Update ของ DataAdapter
row(“LastName”) = “แขงขน”
row(“Title”) = “Teach”
row(“BirthDate”) = #11/21/1974#
'เพ,มเรคอรดใหมเขาไปยงเทเบ,ล Emp ใน DataSet
tb.Rows.Add(row)
การแกไขขอม#ลใน DataSet
'ประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSet
Dim tb As DataTable = ds.Tables(“Emp”)
'วนล#ปเพอทางานกบขอม#ลพนกงานท&งหมดในเทเบ,ล Emp
For Each row As DataRow In tb.Rows
   'ถาพนกงานมชอและนามสก1ลวา “วราว1ฒ, แขงขน”
       If row(“FirstName”) = “วราว1ฒ,” And
              row(“LastName”) = “แขงขน” Then
           'ใหแกไขชอเปน “Warawut”
           row(“FirstName”) = “Warawut”
           'แกไขนามสก1ลเปน “Khangkhan”
           row(“LastName”) = “Khangkhan”
       End If       คอ การแกไขเรคอรดทมอย#แลวใน DataSet
Next
                    โดยกาหนดคาใหมใหกบฟ4ลดทตองการ
                               DataSet                   11
การลบขอม#ลใน DataSet
●
    การลบขอม#ลใน DataSet ทาไดโดยเรยกเมธอด
    Delete ของเรคอรด (ออบเจกต DataRow) ท
    ตองการลบ ซ!งเรคอรดจะไมถ#กลบออกไปจาก
    DataSet จร,งๆ แตจะถ#กกาหนดสถานะ (พรอพเพอรต&
    RowState) เปนคา Deleted การเปลยนสถานะของเร
    คอรดแทนทจะลบออกจาก DataSet น&ทาให
    DataAdapter ร#วาตองลบเรคอรดใดในฐานขอม#ล
    เมอเรยกเมธอด Update ของ DataAdapter เพอนา
    ขอม#ลจาก DataSet ไปอพเดลลงฐานขอม#ล ซ!งหลง
    จากอพเดลฐานขอม#ลแลว เรคอรดน&นจ!งจะถ#กลบออก
    ไปจาก DataSet จร,งๆ                       12
ตวอยาง การลบขอม#ลใน DataSet
'ประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSet
Dim tb As DataTable = ds.Tables(“Emp”)
'วนล#ปเพอทางานกบขอม#ลพนกงานท&งหมดในเทเบ,ล Emp
For Each row As DataRow In tb.Rows
   'ถาพนกงานมชอและนามสก1ลวา “Warawut Khangkhan”
   If row(“FirstName”) = “Warawut” And
          row(“LastName”) = “Khangkhan” Then
       'ใหลบขอม#ลของพนกงานคนน&นท,&งไป
       row.Delete( )
   End If
Next

K.Warawut                DataSet                  13
สถานะของเรคอรด
    คา                      ความหมาย
Added       เรคอรดถ#กเพ,มเขามาใน DataRowCollection
            (พรอพเพอรต& Rows) ดวยเมธอด Add ของ
            DataRowCollection ซ!งหลงจากอพเดทขอม#ล
            ลงฐานขอม#ลแลว สถานะจะเปลยนไปเปน
            Unchanged
Deleted     เรคอรดถ#กลบแลว ซ!งหลงจากอพเดลขอม#ลลง
            ฐานขอม#ลแลว เรคอรดจะถ#กลบออกไปจาก
            DataSet จร,งๆ
Detached    เรคอรดถ#กสรางข!&นมา แตยงไมถ#กเพ,มเขาไปใน
            DataRowCollection

K.Warawut                DataSet                       14
สถานะของเรคอรด (ตอ)
    คา                  ความหมาย
Modified  เรคอรดถ#กแกไขขอม#ล ซ!งหลงจากอพเดท
          ขอม#ลลงฐานขอม#ลแลว สถานะจะเปลยนไป
          เปน Unchanged
Unchanged เรคอรดไมมการเปลยนแปลงใดๆ ซ!งเปนคาเร,ม
          ตนของเรคอรดทเพ,งถ#กอานจากฐานขอม#ลมา
          ใสลง DataSet




K.Warawut              DataSet                    15
การผ#ก DataSet เขากบ
             คอนโทรลบนฟอรม
●
    Data Binding หมายถ!ง การเชอมโยงกนระหวางออบ
    เจกตททาหนาทเปน “ผ#จดเตรยมขอม#ล” (Data
    Provider) หรอ “แหลงขอม#ล” (Data Source) กบ
    ออบเจกตททาหนาทเปน “ผ#ใชขอม#ล” (Data
    Consumer) ซ!ง Data Provider ในกรณของเราคอ
    เทเบ,ล (ออบเจกต DataTable) ใน DataSet สวน
    Data Consumer ไดแกคอนโทรลตางๆ ทใชแสดง
    ผลขอม#ล เรยกวา data-bound control
●
    Data Consumer หรอทเรยกวา Data-bound
    control แบงได 2 ประเภท คอ simple-bound
    control และ complex-bound control
                                             16
Simple Data Binding
●
    อาศยพรอพเพอรต& DataBindings ของคอนโทรลน&น
    ในการระบ1การเชอมโยงระหวางพรอพเพอรต&ของ
    คอนโทรลกบแหลงขอม#ล
    Object.DataBindings.Add(propertyName, dataSource, DataMember)

    object คอนโทรลททาหนาทเป!น Data Consumer
    propertyName พร"อพเพอร#ตของคอนโทรลทใชทา Data Binding
                                   $
    dataSource ออบเจ"กต#ททาหนาทเป!นแหล'งขอมลหร(อ Data Provider
    ซ*งปกตเราจะระบ,เทเบลใน DataSet ให-ก-บพารามเตอร#น$
    dataMember ช(อฟ/ลด#ในแหล'งขอมลทใชทา DataBinding

     TextBox1.DataBindings.Add(“Text”, ds.Table(“Emp”), “FirstName”)
Complex Data Binding
●
    คอนโทรลบางชน,ด เชน ListBox, ComboBox และ
    DataGridView สามารถแสดงขอม#ลจากแหลงขอม#ล
    ไดหลายเรคอรดพรอมกน เนองจากคอนโทรลเหลา
    น&แสดงขอม#ลในร#ปแบบรายการ (list) หรอในร#ปแบบ
    ตาราง
●
    การทา Data Binding กบ Complex-Bound Control
    น&น จะตองกาหนดออบเจกตทเปนแหลงขอม#ลใหกบ
    พรอพเพอรต& DataSource ของคอนโทรล
          DataGridView1.DataSource = ds.Table(“Emp”)

            ListBox1.DataSource = ds.Table(“Emp”)
            ListBox1.DisplayMember = “FirstName”
การเลอนไปยงเรคอรดตางๆ
 ●
     การเลอนเรคอรด หมายถ!ง การเปลยนแปลงเรคอรดท
     เปนเรคอรดป<จจ1บน โดยเรคอรดป<จจ1บน (Current
     Record) คอ เรคอรดทจะถ#กแสดงขอม#ลออกมาใน
     Simple-Bound Control
 ●
     ออบเจกต CurrencyManager (ตวจดการเรคอรด
     ป<จจ1บน) คอ ออบเจกตทคอยจดจาตาแหนงของ
     เรคอรดป<จจ1บนสาหรบแหลงขอม#ลหน!งๆ โดยแตละ
     แหลงขอม#ลจะมออบเจกต CurrencyManager เปน
     ของตวเอง
K.Warawut              DataSet                  19
การเลอนไปยงเรคอรดตางๆ (ตอ)
 ●
     ออบเจกต CurrencyManager ท&งหมดทสมพนธกบ
     แหลงขอม#ลตางๆ ภายในฟอรมจะถ#กจดการผานออบ
     เจกต BindingContext ในฟอรมน&น
 ●
     การเขาถ!ง CurrencyManager สาหรบแหลงขอม#ลท
     ตองการ ทาไดโดยเรยกใชพรอพเพอรต&
     BindingContext ของฟอรม พรอมท&งสงแหลง
     ขอม#ลน&นไปเปนอารก,วเมนต
       Me.BindingContext(ds.Tables(“Emp”))
     คอ การเขาถ!งออบเจกต CurrencyManager ทคอย
     จดจาตาแหนงเรคอรดป<จจ1บนในเทเบ,ล Emp
K.Warawut              DataSet                 20
การเลอนไปยงเรคอรดตางๆ (ตอ)
 ●
     เลอนเรคอรด สามารถกาหนดหมายเลขเรคอรดท
     ตองการใหเปนเรคอรดป<จจ1บนทพรอพเพอรต&
     Position ของ CurrencyManager
 ●
     กาหนดใหเรคอรดแรกเปนเรคอรดป<จจ1บน
     Me.BindingContext(ds.Table(“Emp”)).Position = 0
 ●
     กาหนดใหเรคอรดทอย#ถดจากเรคอรดป<จจ1บนเปนเร
     คอรดป<จจ1บน
     Me.BindingContext(ds.Table(“Emp”)).Position += 1


K.Warawut                 DataSet                      21
การเลอนไปยงเรคอรดตางๆ (ตอ)
 ●
     กาหนดใหเรคอรดทอย#กอนหนาเรคอรดป<จจ1บนเปนเร
     คอรดป<จจ1บน
     Me.BindingContext(ds.Table(“Emp”)).Position -= 1
 ●
     กาหนดใหเรคอรดลาดบท 3 เปนเรคอรดป<จจ1บน
     Me.BindingContext(ds.Table(“Emp”)).Position = 2
 ●
     กาหนดใหเรคอรดส1ดทายเปนเรคอรดป<จจ1บน
     Me.BindingContext(ds.Table(“Emp”)).Position = _
       Me.BindingContext(ds.Table(“Emp”)).Count - 1


K.Warawut                 DataSet                      22
เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช
        CurrencyManager
 ●
     ออบเจกต CurrencyManager ไมไดมความสามารถ
     แคการจดจาและเปลยนตาแหนงเรคอรดป<จจ1บน
     เทาน&น ออบเจกตน&ยงใชเพ,มหรอลบเรคอรดในแหลง
     ขอม#ลทมนรบผ,ดชอบอย#ไดดวย โดยใชเมธอด
     AddNew และ RemoveAt ตามลาดบ
 ●
     เมธอด AddNew จะสรางเรคอรดวางๆ ข!&นมาใน
     แหลงขอม#ล พรอมท&งกาหนดใหเรคอรดใหมน&นเปน
     เรคอรดป<จจ1บนโดยอตโนมต,


K.Warawut              DataSet                   23
เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช
       CurrencyManager (ตอ)
  ●
      เมธอด RemoveAt ตองการอารก,วเมนต 1 ตว คอ
      หมายเลขของเรคอรดทจะลบ
'เกบหมายเลขของเรคอรดป0จจบนไวในตวแปร iCurrentRecord
Dim iCurrentRecord As Integer = _
    Me.BindingContext(ds.Tables(“Emp”)).Position
'ลบเรคอรดทมหมายเลขต1าแหนงเทากบคาของ iCurrentRecord
Me.BindingContext(ds.Tables(“Emp”)).RemoveAt(iCurrentRecord)




 K.Warawut                    DataSet                   24
Example:
            CurrencyManager Project



K.Warawut             DataSet         25
การกลนกรองและเรยงลาดบขอม#ลดวย
            DataView
 ●
     DataView ทาหนาทกลนกรองขอม#ลใน DataTable
     ตามทกาหนด แลวแสดงขอม#ลน&นออกไปใหแก
     คอนโทรลทผ#กอย#กบมน นอกจากน&ยงสามารถเพ,ม
     ลบ และแกไขเรคอรดใน DataTable ผาน DataView
     ไดอกดวย
 ●
     DataView ชวยสราง “ม1มมองขอม#ล” (Data View) ท
     แตกตางไปจาก DataTable เชน DataTable อาจ
     เกบขอม#ลพนกงานท&งหมดไวโดยเรยงลาดบตามชอ
     แตค1ณอาจสราง DataView ข!&นมาครอบ DataTable
     น&นโดยใหจดเรยงเรคอรดตามนามสก1ล
K.Warawut               DataSet                 26
สราง DataView
 ●
     โดยสรางออบเจกตของคลาส DataView ใน
     เนมสเปซ System.Data ข!&นมา พรอมท&งระบ1
     DataTable เปนอารก,วเมนตใหกบคอนสตรคเตอร
     ของคลาส เพอใช DataView เปลยนม1มมองขอม#ลใน
     DataTable น&น ตวอยาง
       Dim dv As New DataView(ds.Tables(“Emp”))
     หรออาจสราง DataView ข!&นมากอน แลวคอยระบ1
     DataTable ใหทหลงทพรอพเพอรต& Table
       Dim dv As New DataView( )
       dv.Table = ds.Tables(“Emp”)
K.Warawut              DataSet                27
กลนกรองและเรยงลาดบขอม#ลใน
                    DataView
 ●
     เมอสราง DataView ข!&นมาใหมๆ ขอม#ลใน
     DataView จะมม1มมองเหมอนกบขอม#ลใน
     DataTable ทมนครอบอย#ท1กประการ แตหลง
     จากน&นค1ณสามารถเปลยนม1มมองขอม#ลใหกบ
     DataView ได โดยใชพรอพเพอรต& เชน RowFilter
     และ Sort เปนตน




K.Warawut               DataSet                  28
พรอพเพอรต& RowFilter ของ
                  DataView
 ●
     กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City
     เทากบ “Seattle”
       dv.RowFilter = “City = 'Seattle'”
 ●
     กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City
     เทากบ “Des Moines” แตคาของฟ4ลด State ตองไม
     เทากบ “IA”
       dv.RowFilter = “City = 'Des Moines' AND
     (NOT State = 'IA')”


K.Warawut              DataSet                29
พรอพเพอรต& RowFilter ของ
                 DataView (ตอ)
 ●
     กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City
     เทากบ “Seattle”, “Tacoma” หรอ “Blaine”
        dv.RowFilter = “City IN ('Seattle',
     'Tacoma', 'Blaine')”
 ●
     กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City
     ข!&นตนดวยคาวา “Sea”
         dv.RowFilter = “City LIKE 'Sea%'”



K.Warawut             DataSet               30
พรอพเพอรต& Sort ของ DataView
●
    ใหเรยงลาดบตามรหสพนกงาน
      dv.Sort = “CustomerID”
●
    ใหเรยงลาดบตามชอพนกงาน โดยถาชอซ&ากนให
    เรยงลาดบตามนามสก1ล
       dv.Sort = “FirstName, LastName”
●
    ใหเรยงลาดบตามชอเมองจากมากไปนอย
      dv.Sort = “City DESC”
●
    ใหเรยงลาดบตามชอรฐจากมากไปนอย แตถาชอรฐ
    เหมอนกนใหเรยงลาดบตามชอเมองจากนอยไปมาก
      dv.Sort = “State DESC, City”          31
Example:

            DataViewDemo Project



K.Warawut            DataSet       32
ทางานกบ DataSet ทมหลายเทเบล



                    Example:
            MasterDetailsDemo Project


K.Warawut              DataSet          33
กาหนดความสมพนธระหวางเทเบ,ลดวย
          DataRelation
 ●
     การกาหนดความสมพนธระหวางเทเบ, 2 เทเบ,ลใน
     DataSet ทาไดโดยสรางออบเจกต DataRelation
     ข!&นมา ซ!งแตละออบเจกตจะเปนตวแทนของความ
     สมพนธหน!งๆ
 ●
     การสรางออบเจกต DataRalation น&นจะตองระบ1ชอ
     ความสมพนธและฟ4ลด (ออบเจกต DataColumn) ใน
     เทเบ,ลท&งสองทใชเชอมโยงขอม#ลจาก 2 เทเบ,ลน&น
     เขาดวยกน


K.Warawut              DataSet                 34
การสรางออบเจกต DataRelation

     DataRelation(relationName, parentColumn, childColumn)

 ●
     relationName ชอความสมพนธทตองการกาหนด
 ●
     parentColumn ฟ4ลด (ออบเจกต DataColumn)
     ใน Parent Table ทเชอมดยงไปยงฟ4ลดใน Child
     Table
 ●
     childColumn ฟ4ลด (ออบเจกต DataColumn) ใน
     Child Table ทเชอมโยงไปยงฟ4ลดใน Parent Table

K.Warawut                    DataSet                         35
ตวอยาง การสรางออบเจกต
                DataRelation
'ใชตวแปร parentColumn อางองไปยงฟ#ลด
'CustomerID ในเทเบล Cust
Dim parentColumn As DataColumn =
ds.Tables(“Cust”).Columns(“CustomerID”)
'ใชตวแปร childColumn อางองไปยงฟ#ลด
'CustomerID ในเทเบล Ord
Dim childColumn As DataColumn =
   ds.Tables(“Ord”).Columns(“CustomerID”)
'กาหนดความสมพนธชอ CustomerOrders ข()นมา
Dim relation As DataRelation = New
   DataRelation(“CustomerOrders”, parentColumn,
   childColumn)
K.Warawut                 DataSet                 36
เพ,ม DataRelation เขาไปใน
        DataRelationCollection
●
    เมอสรางออบเจกต DataRelation ข!&นมาแลว จะตอง
    เพ,มออบเจกตน&เขาไปในคอลเลคชน
    DataRelationCollection ของ DataSet ดวย เชน
       ds.Relations.Add(relation)
    คอ การเพ,มความสมพนธ (ออบเจกต DataRelation)
    ทสรางข!&นเมอคร#น& เขาไปในคอลเลคชน
    DataRelationCollection
●
    พรอพเพอรต& Relations ของ DataSet จะใหคาเปน
    ออบเจกต DataRelationCollection ซ!งเปนคอลเล
    คชนทบรรจ1ออบเจกต DataRelation ท&งหมดท
    เกยวของกบ DataSet                          37
การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท
                สมพนธกน
 ●
     เมอเพ,มเขาไปใน DataRelationCollection
     (พรอพเพอรต& Relations ของ DataSet) เรยบรอย
     แลว เมอทางานอย#กบเรคอรดใน Parent Table จะ
     สามารถเขาถ!งเรคอรดใน Child Table ทสมพนธกบ
     เรคอรดน&นๆ ได โดยเรยกใชเมธอด GetChildRows
     ของเรคอรด (ออบเจกต DataRow) น&นพรอมท&งระบ1
     ชอความสมพนธเปนอารก,วเมนต



K.Warawut               DataSet                   38
การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท
              สมพนธกน (ตอ)
 ●
     เนองจากเรคอรดใน Child Table ทสมพนธกบเร
     คอรดหน!งๆ ใน Parent Table อาจมไดหลาย
     เรคคอรด ดงน&นเมธอด GetChildRows จ!งให
     ผลลพธเปนอารเรยของออบเจกต DataRow
 Dim childRows( ) As DataRow
 childRows = ds.Table(“Cust”).Rows(0).GetChildRows(“CustomerOrders”)
 For Each row As DataRow In childRows
     'ในแต'ละรอบ ต-วแปร row จะอางองไปย-งแต'ละเรคอร#ดในเทเบล Orders ทส-มพ-นธ#ก-บเรคอร#ดแรก
     'ในเทเบล Customers
 Next


K.Warawut                                DataSet                                      39
การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท
               สมพนธกน (ตอ)
  ●
      ในทางกลบกนเราสามารถเขาถ!งเรคอรดใน Parent
      Table ทสมพนธกบเรคอรดหน!งๆ ใน Child Table ได
      เชนเดยวกน และโดยทวไปเรคอรดดงกลาวใน
      Parent Table จะมเพยงเรคอรดเดยว
  ●
      เมธอดทใชเพอการน&คอ GetParentRow (ไมม s) ซ!ง
      ใหผลลพธเปนออบเจกต DataRow
Dim row As DataRow =
   ds.Table(“Ord”).Rows(0).GetParentRow(“CustomerOrders”)
TextBox1.Text = row(“CompanyName”)

 K.Warawut                 DataSet                      40
Example:

            DataRelation Project



K.Warawut           DataSet        41
Contact us
        Mr.Warawut Khangkhan
●   Social Media:
    http://www.facebook.com/awarawut (Profile)
    http://www.facebook.com/AjWarawut (Learning)
    http://twitter.com/awarawut
●   Web Site:
    http://awarawut.blogspot.com
●   E-Mail:
    awarawut@hotmail.com
    warawut_kha@dusit.ac.th
●   Mobile:
    083-0698-410

More Related Content

What's hot

บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]Mook Sasivimon
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระWorapod Khomkham
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรMook Sasivimon
 
ตัวแปรชุด
ตัวแปรชุดตัวแปรชุด
ตัวแปรชุดPear Pimnipa
 

What's hot (10)

บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
 
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระตัวแปรชุดและตัวแปรกลุ่มอักขระ
ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
 
OpenOffice.org 3.0
OpenOffice.org 3.0OpenOffice.org 3.0
OpenOffice.org 3.0
 
Database
DatabaseDatabase
Database
 
Weka introducing
Weka introducingWeka introducing
Weka introducing
 
1 weka introducing
1 weka introducing1 weka introducing
1 weka introducing
 
ตัวแปลชุดและตัวแปลอักขระ
ตัวแปลชุดและตัวแปลอักขระตัวแปลชุดและตัวแปลอักขระ
ตัวแปลชุดและตัวแปลอักขระ
 
ตัวแปรชุด
ตัวแปรชุดตัวแปรชุด
ตัวแปรชุด
 
Rppt258 march62016
Rppt258 march62016Rppt258 march62016
Rppt258 march62016
 

Viewers also liked

Viewers also liked (9)

一本健康天書
一本健康天書一本健康天書
一本健康天書
 
Insalata di riso ai sapori del mare alla sorrentina
Insalata di riso ai sapori del mare alla sorrentinaInsalata di riso ai sapori del mare alla sorrentina
Insalata di riso ai sapori del mare alla sorrentina
 
Jobb via Social Media? - Inget nytt!
Jobb via Social Media? - Inget nytt!Jobb via Social Media? - Inget nytt!
Jobb via Social Media? - Inget nytt!
 
Array1
Array1Array1
Array1
 
Object-Oriented Programming 9
Object-Oriented Programming 9Object-Oriented Programming 9
Object-Oriented Programming 9
 
Business Computer Project 4
Business Computer Project 4Business Computer Project 4
Business Computer Project 4
 
Object-Oriented Programming 10
Object-Oriented Programming 10Object-Oriented Programming 10
Object-Oriented Programming 10
 
Database design
Database designDatabase design
Database design
 
Array 2
Array 2Array 2
Array 2
 

Similar to DataSet

งานนำเสนอ
งานนำเสนองานนำเสนอ
งานนำเสนอchupong roddee
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระMook Sasivimon
 
บทที่ 2 พื้นฐานภาษาจาวา
บทที่ 2 พื้นฐานภาษาจาวาบทที่ 2 พื้นฐานภาษาจาวา
บทที่ 2 พื้นฐานภาษาจาวาKukkik Kanya
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3
การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3
การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3KEk YourJust'one
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Thank Chiro
 
Sql theory
Sql theorySql theory
Sql theoryalfaton
 
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือกกลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือกNaphamas
 
การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09
การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09
การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09Jenchoke Tachagomain
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ Areeya Onnom
 
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระบทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระMook Sasivimon
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาSaranporn Rungrueang
 

Similar to DataSet (20)

11
1111
11
 
งานนำเสนอ
งานนำเสนองานนำเสนอ
งานนำเสนอ
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ
 
บทที่ 2 พื้นฐานภาษาจาวา
บทที่ 2 พื้นฐานภาษาจาวาบทที่ 2 พื้นฐานภาษาจาวา
บทที่ 2 พื้นฐานภาษาจาวา
 
12
1212
12
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3
การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3
การเขียนคำสั่งควบคุมแบบมีทางเลือก กลุ่ม 3
 
งานนำเสนอ..
งานนำเสนอ..งานนำเสนอ..
งานนำเสนอ..
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Sql theory
Sql theorySql theory
Sql theory
 
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือกกลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
 
lesson4 JSP
lesson4 JSPlesson4 JSP
lesson4 JSP
 
การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09
การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09
การพัฒนาเอกสารออนไลน์ขั้นสูง Lect 09
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
C lang
C langC lang
C lang
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8งานทำ Blog บทที่ 8
งานทำ Blog บทที่ 8
 
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระบทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
บทที่ 5 ตัวแปรชุดและตัวแปรอักขระ
 
Chapter 02 Flowchart
Chapter 02 FlowchartChapter 02 Flowchart
Chapter 02 Flowchart
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 

More from Warawut

Object-Oriented Programming 8
Object-Oriented Programming 8Object-Oriented Programming 8
Object-Oriented Programming 8Warawut
 
Object-Oriented Programming 7
Object-Oriented Programming 7Object-Oriented Programming 7
Object-Oriented Programming 7Warawut
 
Object-Oriented Programming 6
Object-Oriented Programming 6Object-Oriented Programming 6
Object-Oriented Programming 6Warawut
 
Management Information System 6
Management Information System 6Management Information System 6
Management Information System 6Warawut
 
Management Information System 5
Management Information System 5Management Information System 5
Management Information System 5Warawut
 
Management Information System 4
Management Information System 4Management Information System 4
Management Information System 4Warawut
 
Object-Oriented Programming 5
Object-Oriented Programming 5Object-Oriented Programming 5
Object-Oriented Programming 5Warawut
 
Business Computer Project 3
Business Computer Project 3Business Computer Project 3
Business Computer Project 3Warawut
 
Management Information System 3
Management Information System 3Management Information System 3
Management Information System 3Warawut
 
Business Computer Project 2
Business Computer Project 2Business Computer Project 2
Business Computer Project 2Warawut
 
Chapter 2 Strategy & Information System
Chapter 2 Strategy & Information SystemChapter 2 Strategy & Information System
Chapter 2 Strategy & Information SystemWarawut
 
Object-Oriented Programming 4
Object-Oriented Programming 4Object-Oriented Programming 4
Object-Oriented Programming 4Warawut
 
Business Computer Project 1
Business Computer Project 1Business Computer Project 1
Business Computer Project 1Warawut
 
Chapter 1 Organization & MIS
Chapter 1 Organization & MISChapter 1 Organization & MIS
Chapter 1 Organization & MISWarawut
 
Object-Oriented Programming 3
Object-Oriented Programming 3Object-Oriented Programming 3
Object-Oriented Programming 3Warawut
 
Object-Oriented Programming 2
Object-Oriented Programming 2Object-Oriented Programming 2
Object-Oriented Programming 2Warawut
 
Object-Oriented Programming 1
Object-Oriented Programming 1Object-Oriented Programming 1
Object-Oriented Programming 1Warawut
 
Upload File
Upload FileUpload File
Upload FileWarawut
 
Session and Cookie
Session and CookieSession and Cookie
Session and CookieWarawut
 

More from Warawut (20)

Object-Oriented Programming 8
Object-Oriented Programming 8Object-Oriented Programming 8
Object-Oriented Programming 8
 
Object-Oriented Programming 7
Object-Oriented Programming 7Object-Oriented Programming 7
Object-Oriented Programming 7
 
Object-Oriented Programming 6
Object-Oriented Programming 6Object-Oriented Programming 6
Object-Oriented Programming 6
 
Management Information System 6
Management Information System 6Management Information System 6
Management Information System 6
 
Management Information System 5
Management Information System 5Management Information System 5
Management Information System 5
 
Management Information System 4
Management Information System 4Management Information System 4
Management Information System 4
 
Object-Oriented Programming 5
Object-Oriented Programming 5Object-Oriented Programming 5
Object-Oriented Programming 5
 
Business Computer Project 3
Business Computer Project 3Business Computer Project 3
Business Computer Project 3
 
Management Information System 3
Management Information System 3Management Information System 3
Management Information System 3
 
Business Computer Project 2
Business Computer Project 2Business Computer Project 2
Business Computer Project 2
 
Chapter 2 Strategy & Information System
Chapter 2 Strategy & Information SystemChapter 2 Strategy & Information System
Chapter 2 Strategy & Information System
 
Object-Oriented Programming 4
Object-Oriented Programming 4Object-Oriented Programming 4
Object-Oriented Programming 4
 
Business Computer Project 1
Business Computer Project 1Business Computer Project 1
Business Computer Project 1
 
Chapter 1 Organization & MIS
Chapter 1 Organization & MISChapter 1 Organization & MIS
Chapter 1 Organization & MIS
 
Object-Oriented Programming 3
Object-Oriented Programming 3Object-Oriented Programming 3
Object-Oriented Programming 3
 
Object-Oriented Programming 2
Object-Oriented Programming 2Object-Oriented Programming 2
Object-Oriented Programming 2
 
Object-Oriented Programming 1
Object-Oriented Programming 1Object-Oriented Programming 1
Object-Oriented Programming 1
 
Upload File
Upload FileUpload File
Upload File
 
Login
LoginLogin
Login
 
Session and Cookie
Session and CookieSession and Cookie
Session and Cookie
 

DataSet

  • 1. DataSet Suan Dusit Rajabhat University, Phitsanulok Campus Mr.Warawut Khangkhan
  • 2. DataSet ● DataSet คอ ออบเจกตทถอไดวาเปนหวใจของ ADO.NET สาหรบการเขาถ!งขอม#ลแบบ Disconnected เนองจากออบเจกตน&ใชเกบขอม#ลท โปรแกรมด!งมาจากฐานขอม#ล โดยการทางานกบ ขอม#ลใน DataSet จะมร#ปแบบเปนเช,งสมพนธ (Relational) เหมอนการทางานกบฐานขอม#ลโดยตรง แตเปนอ,สระจากฐานขอม#ล ● DataSet ยงสามารถใชเกบขอม#ลทอานมาจากเทกซ ไฟล (Text File) หรอแหลงขอม#ลแบบ XML ไดดวย K.Warawut DataSet 2
  • 3. โครงสรางการทางานของออบเจกต DataSet DataTable Object DataColumn Object DataRow Object K.Warawut DataSet 3
  • 4. DataTable Object ● คอ ตวแทนของแตละ table ใน DataSet ● Table จะถ#กรวบรวมไวในคอลเลคชน DataTableCollection ซ!งเขาถ!งไดโดยเรยกใชพรอพ เพอรต& Tables ของ DataSet (Default) For Each tb As DataTable In ds.Tables TextBox1.Text &= tb.TableName & ControlChars.CrLf Next K.Warawut DataSet 4
  • 5. DataColumn Object ● โครงสรางของแตละ table จะถ#กกาหนดโดย คอลเลคชน DataColumnCollection ซ!งบรรจ1ออบ เจกต DataColumn ไว ● DataColumn คอ ตวแทนของ field หน!งๆ โดยเกบ ค1ณสมบต,ตางๆ เกยวกบ field น&นไว เชน ชอฟ4ลด และชน,ดขอม#ลของฟ4ลด เปนตน K.Warawut DataSet 5
  • 6. DataColumn Object (Cont.) ● สามารถเขาถ!งคอลเลคชน DataColumnCollection ไดโดยเรยกใชพรอพเพอรต& Columns ของ DataTable For Each f As DataColumn In ds.Tables(“Emp”).Columns TextBox1.Text &= f.ColumnName & “: “ & f.DataType.ToString & _ ControlChars.CrLf Next DataColumn Object จะเกบคณสมบตเกยวกบฟลด แตไมไดเกบขอมลในฟลดไว การเขาถ%งขอมลในฟลดจะตองใช DataRow Object K.Warawut DataSet 6
  • 7. DataRow Object ● DataTable จะเกบขอม#ล record ตางๆ ไวใน คอลเลคชน DataRowCollection ซ!งบรรจ1ออบเจกต DataRow ไวต&งแต 0 ออบเจกตข!&นไป โดยแตละออบ เจกต คอ ตวแทนของ record หน!งๆ ● การเขาถ!งคอลเลคชน DataRowCollection ใหใช พรอพเพอรต& Rows ของ DataTable สวนการเขาถ!ง ขอม#ลแตละ field ใน record ใหใชพรอพเพอรต& Item ของ DataRow โดยระบ1ชอ field เปนอารก,วเมนต K.Warawut DataSet 7
  • 8. DataRow Object (Cont.) For Each row As DataRow In ds.Tables(“Emp”).Rows TextBox1.Text &= row.Item(“Firstname”) & ControlChars.CrLf Next เน(องจากพรอพเพอรต* Item เป,น Default Property ของ DataRow ดงน*นแทนทจะเขยนวา row.Item(“Firstname”) อาจเขยนส*นๆ ได row(“Firstname”) K.Warawut DataSet 8
  • 9. การเพ,มขอม#ลเขาไปใน DataSet ● การเพ,มขอม#ลเขาไปใน DataSet คอ การเพ,ม record ใหมเขาไปยง table ใน DataSet ซ!งทาไดโดยเรยก เมธอด NewRow ของ table (DataTable Object) ท ตองการเพ,ม record เขาไป เมธอดน&จะสราง ออบเจกต DataRow ข!&นมาใหมและสงคน (Return) ออบเจกตน&นกลบมาให ดงน&นตองประกาศตวแปร ออบเจกตชน,ด DataRow เพอรบคาจากเมธอด แลว กาหนดขอม#ลลงใน field ตางๆ ของ record ผานทาง ตวแปรดงกลาว ส1ดทายใหเพ,มออบเจกต DataRow เขาไปในคอลเลคชน DataRowCollection ของ table K.Warawut DataSet 9
  • 10. ตวอยาง การเพ,มขอม#ลเขาไปใน DataSet 'ประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSet Dim tb As DataTable = ds.Tables(“Emp”) 'สรางเรคอรดใหมทมโครงสรางของฟ4ลดตางๆ ตามทกาหนด 'โดยเทเบ,ล Emp แลวใชตวแปร row อางอ,งไปยงเรคอรดใหมน&น '(เรคอรดใหมยงไมถ#กเพ,มเขาไปในเทเบ,ล Emp) Dim row As DataRow = tb.NewRow( ) 'กาหนดคาใหกบฟ4ลดตางๆ ถาตองการใหเพมลงในฐานขอมลจรงๆ row(“FirstName”) = “วราว1ฒ,” ตองใชเมธอด Update ของ DataAdapter row(“LastName”) = “แขงขน” row(“Title”) = “Teach” row(“BirthDate”) = #11/21/1974# 'เพ,มเรคอรดใหมเขาไปยงเทเบ,ล Emp ใน DataSet tb.Rows.Add(row)
  • 11. การแกไขขอม#ลใน DataSet 'ประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSet Dim tb As DataTable = ds.Tables(“Emp”) 'วนล#ปเพอทางานกบขอม#ลพนกงานท&งหมดในเทเบ,ล Emp For Each row As DataRow In tb.Rows 'ถาพนกงานมชอและนามสก1ลวา “วราว1ฒ, แขงขน” If row(“FirstName”) = “วราว1ฒ,” And row(“LastName”) = “แขงขน” Then 'ใหแกไขชอเปน “Warawut” row(“FirstName”) = “Warawut” 'แกไขนามสก1ลเปน “Khangkhan” row(“LastName”) = “Khangkhan” End If คอ การแกไขเรคอรดทมอย#แลวใน DataSet Next โดยกาหนดคาใหมใหกบฟ4ลดทตองการ DataSet 11
  • 12. การลบขอม#ลใน DataSet ● การลบขอม#ลใน DataSet ทาไดโดยเรยกเมธอด Delete ของเรคอรด (ออบเจกต DataRow) ท ตองการลบ ซ!งเรคอรดจะไมถ#กลบออกไปจาก DataSet จร,งๆ แตจะถ#กกาหนดสถานะ (พรอพเพอรต& RowState) เปนคา Deleted การเปลยนสถานะของเร คอรดแทนทจะลบออกจาก DataSet น&ทาให DataAdapter ร#วาตองลบเรคอรดใดในฐานขอม#ล เมอเรยกเมธอด Update ของ DataAdapter เพอนา ขอม#ลจาก DataSet ไปอพเดลลงฐานขอม#ล ซ!งหลง จากอพเดลฐานขอม#ลแลว เรคอรดน&นจ!งจะถ#กลบออก ไปจาก DataSet จร,งๆ 12
  • 13. ตวอยาง การลบขอม#ลใน DataSet 'ประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSet Dim tb As DataTable = ds.Tables(“Emp”) 'วนล#ปเพอทางานกบขอม#ลพนกงานท&งหมดในเทเบ,ล Emp For Each row As DataRow In tb.Rows 'ถาพนกงานมชอและนามสก1ลวา “Warawut Khangkhan” If row(“FirstName”) = “Warawut” And row(“LastName”) = “Khangkhan” Then 'ใหลบขอม#ลของพนกงานคนน&นท,&งไป row.Delete( ) End If Next K.Warawut DataSet 13
  • 14. สถานะของเรคอรด คา ความหมาย Added เรคอรดถ#กเพ,มเขามาใน DataRowCollection (พรอพเพอรต& Rows) ดวยเมธอด Add ของ DataRowCollection ซ!งหลงจากอพเดทขอม#ล ลงฐานขอม#ลแลว สถานะจะเปลยนไปเปน Unchanged Deleted เรคอรดถ#กลบแลว ซ!งหลงจากอพเดลขอม#ลลง ฐานขอม#ลแลว เรคอรดจะถ#กลบออกไปจาก DataSet จร,งๆ Detached เรคอรดถ#กสรางข!&นมา แตยงไมถ#กเพ,มเขาไปใน DataRowCollection K.Warawut DataSet 14
  • 15. สถานะของเรคอรด (ตอ) คา ความหมาย Modified เรคอรดถ#กแกไขขอม#ล ซ!งหลงจากอพเดท ขอม#ลลงฐานขอม#ลแลว สถานะจะเปลยนไป เปน Unchanged Unchanged เรคอรดไมมการเปลยนแปลงใดๆ ซ!งเปนคาเร,ม ตนของเรคอรดทเพ,งถ#กอานจากฐานขอม#ลมา ใสลง DataSet K.Warawut DataSet 15
  • 16. การผ#ก DataSet เขากบ คอนโทรลบนฟอรม ● Data Binding หมายถ!ง การเชอมโยงกนระหวางออบ เจกตททาหนาทเปน “ผ#จดเตรยมขอม#ล” (Data Provider) หรอ “แหลงขอม#ล” (Data Source) กบ ออบเจกตททาหนาทเปน “ผ#ใชขอม#ล” (Data Consumer) ซ!ง Data Provider ในกรณของเราคอ เทเบ,ล (ออบเจกต DataTable) ใน DataSet สวน Data Consumer ไดแกคอนโทรลตางๆ ทใชแสดง ผลขอม#ล เรยกวา data-bound control ● Data Consumer หรอทเรยกวา Data-bound control แบงได 2 ประเภท คอ simple-bound control และ complex-bound control 16
  • 17. Simple Data Binding ● อาศยพรอพเพอรต& DataBindings ของคอนโทรลน&น ในการระบ1การเชอมโยงระหวางพรอพเพอรต&ของ คอนโทรลกบแหลงขอม#ล Object.DataBindings.Add(propertyName, dataSource, DataMember) object คอนโทรลททาหนาทเป!น Data Consumer propertyName พร"อพเพอร#ตของคอนโทรลทใชทา Data Binding $ dataSource ออบเจ"กต#ททาหนาทเป!นแหล'งขอมลหร(อ Data Provider ซ*งปกตเราจะระบ,เทเบลใน DataSet ให-ก-บพารามเตอร#น$ dataMember ช(อฟ/ลด#ในแหล'งขอมลทใชทา DataBinding TextBox1.DataBindings.Add(“Text”, ds.Table(“Emp”), “FirstName”)
  • 18. Complex Data Binding ● คอนโทรลบางชน,ด เชน ListBox, ComboBox และ DataGridView สามารถแสดงขอม#ลจากแหลงขอม#ล ไดหลายเรคอรดพรอมกน เนองจากคอนโทรลเหลา น&แสดงขอม#ลในร#ปแบบรายการ (list) หรอในร#ปแบบ ตาราง ● การทา Data Binding กบ Complex-Bound Control น&น จะตองกาหนดออบเจกตทเปนแหลงขอม#ลใหกบ พรอพเพอรต& DataSource ของคอนโทรล DataGridView1.DataSource = ds.Table(“Emp”) ListBox1.DataSource = ds.Table(“Emp”) ListBox1.DisplayMember = “FirstName”
  • 19. การเลอนไปยงเรคอรดตางๆ ● การเลอนเรคอรด หมายถ!ง การเปลยนแปลงเรคอรดท เปนเรคอรดป<จจ1บน โดยเรคอรดป<จจ1บน (Current Record) คอ เรคอรดทจะถ#กแสดงขอม#ลออกมาใน Simple-Bound Control ● ออบเจกต CurrencyManager (ตวจดการเรคอรด ป<จจ1บน) คอ ออบเจกตทคอยจดจาตาแหนงของ เรคอรดป<จจ1บนสาหรบแหลงขอม#ลหน!งๆ โดยแตละ แหลงขอม#ลจะมออบเจกต CurrencyManager เปน ของตวเอง K.Warawut DataSet 19
  • 20. การเลอนไปยงเรคอรดตางๆ (ตอ) ● ออบเจกต CurrencyManager ท&งหมดทสมพนธกบ แหลงขอม#ลตางๆ ภายในฟอรมจะถ#กจดการผานออบ เจกต BindingContext ในฟอรมน&น ● การเขาถ!ง CurrencyManager สาหรบแหลงขอม#ลท ตองการ ทาไดโดยเรยกใชพรอพเพอรต& BindingContext ของฟอรม พรอมท&งสงแหลง ขอม#ลน&นไปเปนอารก,วเมนต Me.BindingContext(ds.Tables(“Emp”)) คอ การเขาถ!งออบเจกต CurrencyManager ทคอย จดจาตาแหนงเรคอรดป<จจ1บนในเทเบ,ล Emp K.Warawut DataSet 20
  • 21. การเลอนไปยงเรคอรดตางๆ (ตอ) ● เลอนเรคอรด สามารถกาหนดหมายเลขเรคอรดท ตองการใหเปนเรคอรดป<จจ1บนทพรอพเพอรต& Position ของ CurrencyManager ● กาหนดใหเรคอรดแรกเปนเรคอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position = 0 ● กาหนดใหเรคอรดทอย#ถดจากเรคอรดป<จจ1บนเปนเร คอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position += 1 K.Warawut DataSet 21
  • 22. การเลอนไปยงเรคอรดตางๆ (ตอ) ● กาหนดใหเรคอรดทอย#กอนหนาเรคอรดป<จจ1บนเปนเร คอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position -= 1 ● กาหนดใหเรคอรดลาดบท 3 เปนเรคอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position = 2 ● กาหนดใหเรคอรดส1ดทายเปนเรคอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position = _ Me.BindingContext(ds.Table(“Emp”)).Count - 1 K.Warawut DataSet 22
  • 23. เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช CurrencyManager ● ออบเจกต CurrencyManager ไมไดมความสามารถ แคการจดจาและเปลยนตาแหนงเรคอรดป<จจ1บน เทาน&น ออบเจกตน&ยงใชเพ,มหรอลบเรคอรดในแหลง ขอม#ลทมนรบผ,ดชอบอย#ไดดวย โดยใชเมธอด AddNew และ RemoveAt ตามลาดบ ● เมธอด AddNew จะสรางเรคอรดวางๆ ข!&นมาใน แหลงขอม#ล พรอมท&งกาหนดใหเรคอรดใหมน&นเปน เรคอรดป<จจ1บนโดยอตโนมต, K.Warawut DataSet 23
  • 24. เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช CurrencyManager (ตอ) ● เมธอด RemoveAt ตองการอารก,วเมนต 1 ตว คอ หมายเลขของเรคอรดทจะลบ 'เกบหมายเลขของเรคอรดป0จจบนไวในตวแปร iCurrentRecord Dim iCurrentRecord As Integer = _ Me.BindingContext(ds.Tables(“Emp”)).Position 'ลบเรคอรดทมหมายเลขต1าแหนงเทากบคาของ iCurrentRecord Me.BindingContext(ds.Tables(“Emp”)).RemoveAt(iCurrentRecord) K.Warawut DataSet 24
  • 25. Example: CurrencyManager Project K.Warawut DataSet 25
  • 26. การกลนกรองและเรยงลาดบขอม#ลดวย DataView ● DataView ทาหนาทกลนกรองขอม#ลใน DataTable ตามทกาหนด แลวแสดงขอม#ลน&นออกไปใหแก คอนโทรลทผ#กอย#กบมน นอกจากน&ยงสามารถเพ,ม ลบ และแกไขเรคอรดใน DataTable ผาน DataView ไดอกดวย ● DataView ชวยสราง “ม1มมองขอม#ล” (Data View) ท แตกตางไปจาก DataTable เชน DataTable อาจ เกบขอม#ลพนกงานท&งหมดไวโดยเรยงลาดบตามชอ แตค1ณอาจสราง DataView ข!&นมาครอบ DataTable น&นโดยใหจดเรยงเรคอรดตามนามสก1ล K.Warawut DataSet 26
  • 27. สราง DataView ● โดยสรางออบเจกตของคลาส DataView ใน เนมสเปซ System.Data ข!&นมา พรอมท&งระบ1 DataTable เปนอารก,วเมนตใหกบคอนสตรคเตอร ของคลาส เพอใช DataView เปลยนม1มมองขอม#ลใน DataTable น&น ตวอยาง Dim dv As New DataView(ds.Tables(“Emp”)) หรออาจสราง DataView ข!&นมากอน แลวคอยระบ1 DataTable ใหทหลงทพรอพเพอรต& Table Dim dv As New DataView( ) dv.Table = ds.Tables(“Emp”) K.Warawut DataSet 27
  • 28. กลนกรองและเรยงลาดบขอม#ลใน DataView ● เมอสราง DataView ข!&นมาใหมๆ ขอม#ลใน DataView จะมม1มมองเหมอนกบขอม#ลใน DataTable ทมนครอบอย#ท1กประการ แตหลง จากน&นค1ณสามารถเปลยนม1มมองขอม#ลใหกบ DataView ได โดยใชพรอพเพอรต& เชน RowFilter และ Sort เปนตน K.Warawut DataSet 28
  • 29. พรอพเพอรต& RowFilter ของ DataView ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City เทากบ “Seattle” dv.RowFilter = “City = 'Seattle'” ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City เทากบ “Des Moines” แตคาของฟ4ลด State ตองไม เทากบ “IA” dv.RowFilter = “City = 'Des Moines' AND (NOT State = 'IA')” K.Warawut DataSet 29
  • 30. พรอพเพอรต& RowFilter ของ DataView (ตอ) ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City เทากบ “Seattle”, “Tacoma” หรอ “Blaine” dv.RowFilter = “City IN ('Seattle', 'Tacoma', 'Blaine')” ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City ข!&นตนดวยคาวา “Sea” dv.RowFilter = “City LIKE 'Sea%'” K.Warawut DataSet 30
  • 31. พรอพเพอรต& Sort ของ DataView ● ใหเรยงลาดบตามรหสพนกงาน dv.Sort = “CustomerID” ● ใหเรยงลาดบตามชอพนกงาน โดยถาชอซ&ากนให เรยงลาดบตามนามสก1ล dv.Sort = “FirstName, LastName” ● ใหเรยงลาดบตามชอเมองจากมากไปนอย dv.Sort = “City DESC” ● ใหเรยงลาดบตามชอรฐจากมากไปนอย แตถาชอรฐ เหมอนกนใหเรยงลาดบตามชอเมองจากนอยไปมาก dv.Sort = “State DESC, City” 31
  • 32. Example: DataViewDemo Project K.Warawut DataSet 32
  • 33. ทางานกบ DataSet ทมหลายเทเบล Example: MasterDetailsDemo Project K.Warawut DataSet 33
  • 34. กาหนดความสมพนธระหวางเทเบ,ลดวย DataRelation ● การกาหนดความสมพนธระหวางเทเบ, 2 เทเบ,ลใน DataSet ทาไดโดยสรางออบเจกต DataRelation ข!&นมา ซ!งแตละออบเจกตจะเปนตวแทนของความ สมพนธหน!งๆ ● การสรางออบเจกต DataRalation น&นจะตองระบ1ชอ ความสมพนธและฟ4ลด (ออบเจกต DataColumn) ใน เทเบ,ลท&งสองทใชเชอมโยงขอม#ลจาก 2 เทเบ,ลน&น เขาดวยกน K.Warawut DataSet 34
  • 35. การสรางออบเจกต DataRelation DataRelation(relationName, parentColumn, childColumn) ● relationName ชอความสมพนธทตองการกาหนด ● parentColumn ฟ4ลด (ออบเจกต DataColumn) ใน Parent Table ทเชอมดยงไปยงฟ4ลดใน Child Table ● childColumn ฟ4ลด (ออบเจกต DataColumn) ใน Child Table ทเชอมโยงไปยงฟ4ลดใน Parent Table K.Warawut DataSet 35
  • 36. ตวอยาง การสรางออบเจกต DataRelation 'ใชตวแปร parentColumn อางองไปยงฟ#ลด 'CustomerID ในเทเบล Cust Dim parentColumn As DataColumn = ds.Tables(“Cust”).Columns(“CustomerID”) 'ใชตวแปร childColumn อางองไปยงฟ#ลด 'CustomerID ในเทเบล Ord Dim childColumn As DataColumn = ds.Tables(“Ord”).Columns(“CustomerID”) 'กาหนดความสมพนธชอ CustomerOrders ข()นมา Dim relation As DataRelation = New DataRelation(“CustomerOrders”, parentColumn, childColumn) K.Warawut DataSet 36
  • 37. เพ,ม DataRelation เขาไปใน DataRelationCollection ● เมอสรางออบเจกต DataRelation ข!&นมาแลว จะตอง เพ,มออบเจกตน&เขาไปในคอลเลคชน DataRelationCollection ของ DataSet ดวย เชน ds.Relations.Add(relation) คอ การเพ,มความสมพนธ (ออบเจกต DataRelation) ทสรางข!&นเมอคร#น& เขาไปในคอลเลคชน DataRelationCollection ● พรอพเพอรต& Relations ของ DataSet จะใหคาเปน ออบเจกต DataRelationCollection ซ!งเปนคอลเล คชนทบรรจ1ออบเจกต DataRelation ท&งหมดท เกยวของกบ DataSet 37
  • 38. การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท สมพนธกน ● เมอเพ,มเขาไปใน DataRelationCollection (พรอพเพอรต& Relations ของ DataSet) เรยบรอย แลว เมอทางานอย#กบเรคอรดใน Parent Table จะ สามารถเขาถ!งเรคอรดใน Child Table ทสมพนธกบ เรคอรดน&นๆ ได โดยเรยกใชเมธอด GetChildRows ของเรคอรด (ออบเจกต DataRow) น&นพรอมท&งระบ1 ชอความสมพนธเปนอารก,วเมนต K.Warawut DataSet 38
  • 39. การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท สมพนธกน (ตอ) ● เนองจากเรคอรดใน Child Table ทสมพนธกบเร คอรดหน!งๆ ใน Parent Table อาจมไดหลาย เรคคอรด ดงน&นเมธอด GetChildRows จ!งให ผลลพธเปนอารเรยของออบเจกต DataRow Dim childRows( ) As DataRow childRows = ds.Table(“Cust”).Rows(0).GetChildRows(“CustomerOrders”) For Each row As DataRow In childRows 'ในแต'ละรอบ ต-วแปร row จะอางองไปย-งแต'ละเรคอร#ดในเทเบล Orders ทส-มพ-นธ#ก-บเรคอร#ดแรก 'ในเทเบล Customers Next K.Warawut DataSet 39
  • 40. การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท สมพนธกน (ตอ) ● ในทางกลบกนเราสามารถเขาถ!งเรคอรดใน Parent Table ทสมพนธกบเรคอรดหน!งๆ ใน Child Table ได เชนเดยวกน และโดยทวไปเรคอรดดงกลาวใน Parent Table จะมเพยงเรคอรดเดยว ● เมธอดทใชเพอการน&คอ GetParentRow (ไมม s) ซ!ง ใหผลลพธเปนออบเจกต DataRow Dim row As DataRow = ds.Table(“Ord”).Rows(0).GetParentRow(“CustomerOrders”) TextBox1.Text = row(“CompanyName”) K.Warawut DataSet 40
  • 41. Example: DataRelation Project K.Warawut DataSet 41
  • 42. Contact us Mr.Warawut Khangkhan ● Social Media: http://www.facebook.com/awarawut (Profile) http://www.facebook.com/AjWarawut (Learning) http://twitter.com/awarawut ● Web Site: http://awarawut.blogspot.com ● E-Mail: awarawut@hotmail.com warawut_kha@dusit.ac.th ● Mobile: 083-0698-410