วิธีการปรับปรุงฐานข้อมูลจากวัตถุเป็นชุดข้อมูล โดยใช้ Visual Basic .NET

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 301248 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

วัตถุชุดข้อมูลส่วนคีย์การเข้าถึงข้อมูลใน Microsoft .NET กรอบ มีวัตถุในหน่วยความจำที่สามารถเก็บตาราง วิว และ ความสัมพันธ์ บทความนี้อธิบายเกี่ยวกับวิธีการใช้ชุดข้อมูลที่ประกอบด้วยข้อมูล (ซึ่งถูกโหลดจากฐานข้อมูล) การปรับเปลี่ยนที่ ข้อมูล และส่งแล้วนั้นกลับไปยังฐานข้อมูลต้นฉบับที่ปรับปรุง แหล่งที่มา

ความต้องการ

ฮาร์ดแวร์แนะนำ ซอฟต์แวร์ การจัดเค้าร่างข้อมูลต่อไปนี้ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่คุณต้องการ:
  • Microsoft Windows 2000 Professional, Windows 2000 Server Windows 2000 ขั้นสูงเซิร์ฟเวอร์ หรือเซิร์ฟเวอร์ Windows NT 4.0
  • Microsoft SQL Server เวอร์ชั่น 7.0 หรือรุ่น 2000 หรือ Microsoft ข้อมูล Engine (MSDE) กับฐานข้อมูลตัวอย่าง PUBS ติดตั้ง
  • Microsoft Visual Studio .NET
  • สิทธิ์ที่เหมาะสมและค่าที่ถูกต้องสำหรับ การเชื่อมต่อกับคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server
บทความนี้อนุมานว่า คุณคุ้นเคยกับต่อไปนี้ หัวข้อ:
  • คำศัพท์ของฐานข้อมูล
  • Structured Query Language (SQL)

วิธีการปรับปรุงฐานข้อมูลจากวัตถุเป็นชุดข้อมูล

ส่วนนี้อธิบายวิธีการใช้วัตถุชุดข้อมูลเพื่อการปรับปรุงข้อมูลในฐานข้อมูล สิ่งสำคัญคือการจดจำ ว่า คุณยังสามารถใช้เป็นSqlCommandวัตถุเพื่อแทรก อัพเดต และลบข้อมูลในฐานข้อมูล โดยตรง

เพื่อช่วยให้คุณทำความเข้าใจบทความนี้ คลิกบทความ หมายเลขด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
301216 วิธีการเติมข้อมูลวัตถุเป็นชุดข้อมูลจากฐานข้อมูล โดยใช้ Visual Basic .NET
บางส่วนของหัวข้อที่ครอบคลุมใน 301216 รวมวิธีการดึงข้อมูลจากฐานข้อมูล และเป็นแบบชุดข้อมูลและวิธีในชุดข้อมูลกำลังแยกต่างหาก และแตกต่างจากฐานข้อมูล

หลังจากที่ถูกโหลดในชุดข้อมูลคุณสามารถปรับเปลี่ยนข้อมูล และในชุดข้อมูลจะติดตามการเปลี่ยนแปลง วัตถุชุดข้อมูลอาจถูกจัดเป็นแคชภายในหน่วยความจำของข้อมูลที่อยู่ ดึงข้อมูลมาจากฐานข้อมูล และประกอบด้วยชุดของตาราง ความสัมพันธ์ และข้อจำกัด

เมื่อต้องการปรับปรุงเป็นชุดข้อมูลและส่งการปรับปรุงเหล่านั้นกลับไปยังฐานข้อมูล ให้ทำตามขั้นตอนเหล่านี้:
  1. เปิด Microsoft Visual Studio .NET
  2. สร้างโปรแกรมประยุกต์คอนโซลใหม่ใน Visual Basic .NET โดย Start Visual Studio สร้างโมดูลแบบคงและขั้นตอนการMain()ว่างเปล่า
  3. ตรวจสอบให้แน่ใจว่า โครงการที่ประกอบด้วยการอ้างอิงไปยังระบบและSystem.Data namespaces ใช้คำสั่งการนำเข้าnamespacesระบบSystemDataและSystem.Data.SqlClientเพื่อให้คุณไม่จำเป็นต้องมีสิทธิได้รับประกาศ จาก namespaces เหล่านี้ในภายหลังในรหัสของคุณ คุณต้องใช้ก่อนคำสั่งเหล่านี้ เมื่อต้องการประกาศใด ๆ อื่น ๆ ค่า
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    					
  4. ก่อนที่คุณสามารถปรับเปลี่ยนข้อมูล และส่ง กลับการเปลี่ยนแปลง ไปยังฐานข้อมูล คุณต้องโหลดข้อมูลลงในชุดข้อมูล สำหรับขั้นตอนโดยละเอียด การอ้างอิงถึง301216. เมื่อต้องการหลีกเลี่ยงการทำสำเนา รหัสในขั้นตอนนี้ จะแสดงในรายละเอียด

    สายอักขระการเชื่อมต่อในต่อไปนี้ รหัสจุดไปยังเซิร์ฟเวอร์ SQL ที่อยู่บนคอมพิวเตอร์เฉพาะที่ (หรือ คอมพิวเตอร์ที่กำลังเรียกใช้รหัส) แทนข้อความนี้ ด้วยตัวคุณเอง การตั้งค่า ถ้าจำเป็น สรุป มีสร้างการเชื่อมต่อ และจากนั้นข้อมูล การ์ดเชื่อมต่อถูกสร้างขึ้น ซึ่งใช้ในการกรอกข้อมูลในชุดข้อมูลที่ มีข้อมูล

    หมายเหตุ ในโค้ดตัวอย่างที่ปรากฏในบทความนี้ คุณต้องเปลี่ยนแปลง UID =ชื่อผู้ใช้ และ รหัสผ่าน =StrongPassword เมื่อต้องการค่าที่ถูกต้อง ตรวจสอบให้แน่ใจว่า ID ผู้ใช้ที่มีการ สิทธิ์ที่เหมาะสมกับดำเนินการนี้กับฐานข้อมูล
    Dim sConnectionString As String
    
    
    ' Modify the following code to correctly connect to your SQL Server.
    sConnectionString = "Password=StrongPassword;User ID=UserName;" & _
                        "Initial Catalog=pubs;" & _
                        "Data Source=(local)"
    
    Dim objConn As New SqlConnection(sConnectionString)
    objConn.Open()
    
    ' Create an instance of a DataAdapter.
    Dim daAuthors As _
        New SqlDataAdapter("Select * From Authors", objConn)
    
    ' Create an instance of a DataSet, and retrieve data from the Authors table.
    Dim dsPubs As New DataSet("Pubs")
    daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")
    daAuthors.Fill(dsPubs, "Authors")
    					
  5. หลังจากที่มีการโหลดข้อมูล คุณสามารถปรับเปลี่ยน มีอยู่ หลายวิธีเพื่อเพิ่มแถว (หรือระเบียน) ตัวอย่างรหัสนี้ใช้เป็นขั้นตอนที่สาม ขั้นตอน:
      • ขอรับวัตถุข้อมูลแถวใหม่จากDataTable
      • ตั้งค่าเขตข้อมูลแถวตามความจำเป็น
      • ผ่านวัตถุนั้นใหม่เป็นวิธีการเพิ่มของคอลเลกชันDataTable.Rows

    วางรหัสต่อไปนี้หลังจากรหัสในขั้นตอนที่ 4:
    '*****************
    'BEGIN ADD CODE 
    ' Create a new instance of a DataTable.
    Dim tblAuthors As DataTable
    tblAuthors = dsPubs.Tables("Authors")
    
    Dim drCurrent As DataRow
    ' Obtain a new DataRow object from the DataTable.
    drCurrent = tblAuthors.NewRow()
    
    ' Set the DataRow field values as necessary.
    drCurrent("au_id") = "993-21-3427"
    drCurrent("au_fname") = "George"
    drCurrent("au_lname") = "Johnson"
    drCurrent("phone") = "800 226-0752"
    drCurrent("address") = "1956 Arlington Pl."
    drCurrent("city") = "Winnipeg"
    drCurrent("state") = "MB"
    drCurrent("contract") = 1
    
    'Pass that new object into the Add method of the DataTable.Rows collection.
    tblAuthors.Rows.Add(drCurrent)
    MsgBox("Add was successful.")
    
    'END ADD CODE 
    					
  6. เมื่อต้องการแก้ไขแถวที่มีอยู่ รับวัตถุข้อมูลแถวที่เหมาะสม และจากนั้น ใส่ค่าใหม่สำหรับหนึ่ง หรือหลายคอลัมน์ คุณ ก่อนอื่นต้องค้นหาถูกต้องแถว ซึ่งเป็นเรื่องง่ายเนื่องจากคุณโหลด schema ของตารางรวมทั้งข้อมูล (การเรียกไปยังFillSchemaในขั้นตอนที่ 4) มีแบบแผนในสถานที่ ตารางทราบซึ่ง คอลัมน์คีย์หลักของ และวิธีการค้นหาของคอลเลกชันของแถวจะพร้อมใช้งาน

    วิธีการค้นหาคืนวัตถุข้อมูลแถวที่ มีค่าระบุในคีย์หลักของระเบียน (ในกรณีนี้ au_id) หลังจากที่คุณได้ที่ข้อมูลแถวคุณสามารถปรับเปลี่ยนคอลัมน์ คุณไม่จำเป็นต้องตัดการ การปรับเปลี่ยนในBeginEditและEndEditแต่นี้ทำให้งานในชุดข้อมูลมีการทำ และอนุญาตให้มีในชุดข้อมูลเพื่อทำการตรวจสอบของทั้งหมดในคราวเดียวกันเมื่อ มีการเรียกEndEdit วางรหัสต่อไปนี้หลังจากรหัสเพิ่ม:
    '*****************
    'BEGIN EDIT CODE 
    
    drCurrent = tblAuthors.Rows.Find("213-46-8915")
    drCurrent.BeginEdit()
    drCurrent("phone") = "342" & drCurrent("phone").ToString.Substring(3)
    drCurrent.EndEdit()
    MsgBox("Record edited successfully")
    
    'END EDIT CODE  
    					
  7. เมื่อต้องการปรับปรุงฐานข้อมูลต้นฉบับ ด้วยการเปลี่ยนแปลงเหล่านี้ ทั้งหมด ผ่านในชุดข้อมูลเป็นวิธีการปรับปรุงการDataAdapterวัตถุ

    อย่างไรก็ตาม ก่อนที่คุณสามารถเรียกใช้การปรับปรุงคุณต้องตั้งค่าคุณสมบัติInsertCommand, UpdateCommandและDeleteCommandของDataAdapterวัตถุ ด้วยตนเองคุณสามารถเขียน SQL และนำสิ่งเหล่านี้ทั้งสาม คุณสมบัติการSqlCommandวัตถุที่สอดคล้องกัน แต่คุณสามารถใช้ Visual Studio .NET เพื่อสร้าง สามรายการนี้คำสั่งโดยอัตโนมัติ

    เมื่อต้องการสร้างคำสั่งต่าง ๆ ที่จำเป็น เมื่อจำเป็น คุณต้องสร้างอินสแตนซ์ของวัตถุการSqlCommandBuilderและใช้DataAdapterในตัวสร้าง ถ้าคุณต้องการใช้วิธีนี้ ซึ่งเป็น ดังตัวอย่างรหัสเป็นไปตาม คุณต้องมีข้อมูลคีย์หลัก พร้อมใช้งานสำหรับตารางของคุณ ในการเข้าถึงข้อมูลคีย์หลัก โทรFillSchemaและจากนั้น ตั้งค่าคุณสมบัติMissingSchemaActionของการDataAdapterAddWithKeyหรือกำหนดคีย์หลักในโค้ดของคุณด้วยตนเอง วาง รหัสต่อไปนี้หลังจากแก้ไขรหัส:
    '*****************
    'BEGIN SEND CHANGES TO SQL SERVER 
    
    Dim objCommandBuilder As New SqlCommandBuilder(daAuthors)
    daAuthors.Update(dsPubs, "Authors")
    MsgBox("SQL Server updated successfully" & chr(13) & "Check Server explorer to see changes")
    
    ' END SEND CHANGES TO SQL SERVER
    					
  8. เมื่อต้องการลบแถวทั้งหมด ใช้วิธีการลบของออบเจ็กต์ข้อมูลแถว โปรดสังเกตว่า ชุดของแถวที่ประกอบด้วยวิธีการสองวิธีเอาออกและRemoveAtซึ่งดูเหมือนจะลบแถว แต่แทน เพิ่งเอาแถว จากคอลเลกชัน เพียงลบวิธีการส่งการลบของคุณกลับไปยังฐานข้อมูลต้นฉบับ วาง รหัสต่อไปนี้หลังจากรหัสส่งการเปลี่ยนแปลงกับ SQL SERVER:
    '*****************
    'BEGIN DELETE CODE
    
    drCurrent = tblAuthors.Rows.Find("993-21-3427")
    drCurrent.Delete()
    MsgBox("Record deleted successfully")
    
    'END DELETE CODE
    					
  9. ส่งการเปลี่ยนแปลงกับ SQL Server เมื่อต้องการลบเรกคอร์ดที่ คุณเพิ่มไว้ก่อนหน้านี้ วางรหัสต่อไปนี้หลังจากรหัสลบ:
    '*****************
    ' CLEAN UP SQL SERVER
    daAuthors.Update(dsPubs, "Authors")
    MsgBox("SQL Server updated successfully" & Chr(13) & Chr(13) & "Check Server Explorer to see changes")
    					
  10. บันทึกโครงการของคุณ
  11. บนเมนูการดีบักคลิกเริ่มเพื่อเรียกใช้โครงการ ขอให้สังเกตว่ากล่องข้อความหลายปรากฏ ซึ่งบ่งชี้ความคืบหน้าของรหัส และอนุญาตให้คุณตรวจทานปัจจุบันหรือไม่ สถานะของข้อมูลที่เป็นความก้าวหน้าของรหัส

รายการรหัสโดยสมบูรณ์

Imports System
Imports System.Data
Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim sConnectionString As String
        ' Modify the following code to correctly connect to your SQL Server.
        sConnectionString = "Password=StrongPassword;User ID=UserName;" & _
                            "Initial Catalog=pubs;" & _
                            "Data Source=(local)"

        Dim objConn As New SqlConnection(sConnectionString)
        objConn.Open()

        ' Create an instance of a DataAdapter.
        Dim daAuthors As _
            New SqlDataAdapter("Select * From Authors", objConn)

        ' Create an instance of a DataSet, and retrieve data from the Authors table.
        Dim dsPubs As New DataSet("Pubs")
        daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")
        daAuthors.Fill(dsPubs, "Authors")

        '*****************
        'BEGIN ADD CODE 
        ' Create a new instance of a DataTable
        Dim tblAuthors As DataTable
        tblAuthors = dsPubs.Tables("Authors")

        Dim drCurrent As DataRow
        ' Obtain a new DataRow object from the DataTable.
        drCurrent = tblAuthors.NewRow()

        ' Set the DataRow field values as necessary.
        drCurrent("au_id") = "993-21-3427"
        drCurrent("au_fname") = "George"
        drCurrent("au_lname") = "Johnson"
        drCurrent("phone") = "800 226-0752"
        drCurrent("address") = "1956 Arlington Pl."
        drCurrent("city") = "Winnipeg"
        drCurrent("state") = "MB"
        drCurrent("contract") = 1

        'Pass that new object into the Add method of the DataTable.Rows collection.
        tblAuthors.Rows.Add(drCurrent)
        MsgBox("Add was successful.")

        'END ADD CODE    
        '*****************
        'BEGIN EDIT CODE

        drCurrent = tblAuthors.Rows.Find("213-46-8915")
        drCurrent.BeginEdit()
        drCurrent("phone") = "342" & drCurrent("phone").ToString.Substring(3)
        drCurrent.EndEdit()
        MsgBox("Record edited successfully")

        'END EDIT CODE   
        '*****************
        'BEGIN SEND CHANGES TO SQL SERVER

        Dim objCommandBuilder As New SqlCommandBuilder(daAuthors)
        daAuthors.Update(dsPubs, "Authors")
        MsgBox("SQL Server updated successfully" & chr(13) & "Check Server explorer to see changes")

        ' END SEND CHANGES TO SQL SERVER 
        '*****************
        'BEGIN DELETE CODE 

        drCurrent = tblAuthors.Rows.Find("993-21-3427")
        drCurrent.Delete()
        MsgBox("Record deleted successfully")

        'END DELETE CODE 
        '*****************
        ' CLEAN UP SQL SERVER
        daAuthors.Update(dsPubs, "Authors")
        MsgBox("SQL Server updated successfully" & Chr(13) & Chr(13) & "Check Server Explorer to see changes")
    End Sub

End Module
				

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ADO.NET วัตถุชุดข้อมูลSQL และดูเว็บไซต์ต่อไปนี้ของ Microsoft:
http://msdn2.microsoft.com/en-us/library/ms810293.aspx

ADO.NET for the ADO Programmer
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN Online .NET Developer Center
http://msdn.microsoft.com/net

คุณสมบัติ

หมายเลขบทความ (Article ID): 301248 - รีวิวครั้งสุดท้าย: 30 พฤษภาคม 2556 - Revision: 5.0
ใช้กับ
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Keywords: 
kbhowtomaster kbmt KB301248 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:301248

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com