วิธีการปรับปรุงจากชุดข้อมูลวัตถุฐานข้อมูล โดยใช้ Visual C# 2005 หรือ Visual C# .NET

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

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

สรุป

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

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

ความต้องการ

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

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

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

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

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

เมื่อต้องการปรับปรุงเป็นชุดข้อมูลและส่งการปรับปรุงเหล่านั้นกลับไปยังฐานข้อมูล ให้ทำตามขั้นตอนเหล่านี้:
  1. Start Visual Studio 2005 หรือ Visual Studio .NET
  2. สร้างโปรแกรมประยุกต์คอนโซลใหม่ใน Visual C# VisualStudio สร้างเป็นคลาสแบบคงที่ โดยค่าเริ่มต้นและขั้นตอนการอนุMain()ว่างเปล่า
  3. ตรวจสอบให้แน่ใจว่า โครงการที่ประกอบด้วยการอ้างอิงถึง namespacesระบบและSystem.Data ใช้คำสั่งที่ใช้ใน namespacesระบบSystem.DataและSystem.Data.SqlClientเพื่อให้คุณไม่จำเป็นต้องกำหนดคุณสมบัติ declarationsfrom namespaces เหล่านี้ในภายหลังในรหัสของคุณ คุณต้องใช้ priorto เหล่านี้คำสั่งประกาศอื่น ๆ
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  4. ก่อนที่คุณสามารถปรับเปลี่ยนข้อมูล และส่ง backto การเปลี่ยนแปลงฐานข้อมูลได้ คุณต้องโหลดข้อมูลลงในตัวชุดข้อมูล สำหรับขั้นตอนโดยละเอียด ดู314145. เมื่อต้องการหลีกเลี่ยงการทำสำเนา รหัสใน stepis นี้ไม่ปรากฏในรายละเอียด

    สายอักขระการเชื่อมต่อในจุด followingcode ไปยังเซิร์ฟเวอร์ SQL ที่อยู่บนเครื่องคอมพิวเตอร์ (หรือ thecomputer ที่รหัสกำลังทำงานอยู่) เพื่อ สรุป มีสร้างการเชื่อมต่อ andthen อะแดปเตอร์ข้อมูลถูกสร้าง ขึ้น ซึ่งใช้ในการเติมชุดข้อมูลมีข้อมูลอยู่
    หมายเหตุ คุณต้องเปลี่ยน ID ผู้ใช้<username>และรหัสผ่านที่<strongpassword>เป็นค่าที่ถูกต้องก่อนที่คุณเรียกใช้โค้ดนี้ ตรวจสอบว่า thatUser ID มีสิทธิ์ที่เหมาะสมในการดำเนินการนี้กับฐานข้อมูลเป็นจุด</strongpassword></username>
    string sConnectionString;
    
    // Modify the following string to correctly connect to your SQL Server.
    sConnectionString = "Password=<strong password>;User ID=<username>;"
    	+ "Initial Catalog=pubs;"
    	+ "Data Source=(local)";
    
    SqlConnection objConn
    	= new SqlConnection(sConnectionString);
    objConn.Open();
    
    // Create an instance of a DataAdapter.
    SqlDataAdapter daAuthors 
    	= new SqlDataAdapter("Select * From Authors", objConn);
    
    // Create an instance of a DataSet, and retrieve data from the Authors table.
    DataSet dsPubs = new DataSet("Pubs");
    daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
    daAuthors.Fill(dsPubs,"Authors");
    					
  5. หลังจากที่ถูกโหลดข้อมูล คุณสามารถปรับเปลี่ยน มีวิธีการ aremany ในการเพิ่มแถว (หรือระเบียน) โค้ดตัวอย่างนี้ใช้เป็น stepprocedure สาม:
    • รับวัตถุข้อมูลแถวใหม่จากการตารางข้อมูล
    • ตั้งค่าเขตข้อมูลแถวตามความจำเป็น
    • ส่งวัตถุใหม่นั้นเป็นวิธีการเพิ่มของคอลเลกชันDataTable.Rows
    วางรหัสต่อไปนี้หลังจากรหัสในขั้นตอนที่ 4:
    //****************
    // BEGIN ADD CODE 
    // Create a new instance of a DataTable.
    DataTable tblAuthors;
    tblAuthors = dsPubs.Tables["Authors"];
    
    DataRow drCurrent;
    // 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.
    tblAuthors.Rows.Add(drCurrent);
    Console.WriteLine("Add was successful, Click any key to continue!!");
    Console.ReadLine();
    
    // END ADD CODE  
    					
  6. เมื่อต้องการแก้ไขแถวที่มีอยู่ รับวัตถุข้อมูลแถวที่เหมาะสม และจากนั้น ใส่ค่าใหม่สำหรับอย่าง น้อยหนึ่งคอลัมน์ Youmust ค้นหาว่าแถว ซึ่งเป็นเรื่องง่ายขึ้นมากเนื่องจากคุณโหลด theschema ของตารางได้เช่นเดียวกับข้อมูล (การเรียกไปยังFillSchemaในขั้นตอนที่ 4) ก่อน มีแบบแผนในสถานที่ ตารางทราบ whichcolumn คือ คีย์หลักของ และวิธีการค้นหาของคอลเลกชันของแถวพร้อมใช้งาน

    วิธีการค้นหาส่งกลับวัตถุข้อมูลแถวที่ มีค่าระบุในคีย์หลักของ (ในกรณีนี้ au_id) หลังจากที่คุณได้ที่ข้อมูลแถวคุณสามารถปรับเปลี่ยนคอลัมน์ คุณไม่จำเป็นต้องตัด themodifications ใน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();
    Console.WriteLine("Record edited successfully, Click any key to continue!!");
    Console.ReadLine();
    
    // END EDIT CODE  
    					
  7. การปรับปรุงฐานข้อมูลต้นฉบับ ด้วยการเปลี่ยนแปลงเหล่านี้ทั้งหมด ผ่านชุดข้อมูลเป็นวิธีการอัพเดตของDataAdapterวัตถุ

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

    คุณต้องสร้างอินสแตนซ์ของวัตถุSqlCommandBuilderและใช้การDataAdapterในคอนสตรัคเตอร์ที่สามารถสร้าง commandswhen จำเป็นต้องใช้ที่จำเป็น ถ้าคุณต้องการใช้วิธีการนี้ isillustrated ซึ่งในตัวอย่างรหัสการติดตาม คุณต้องมี informationavailable คีย์หลักสำหรับตารางของคุณ ในการเข้าถึงข้อมูลของคีย์หลัก โทรFillSchemaและจากนั้น ตั้งค่าคุณสมบัติMissingSchemaActionของคุณDataAdapterAddWithKeyหรือกำหนดคีย์หลักในโค้ดของคุณด้วยตนเอง วางรหัส thefollowing หลังจากแก้ไขรหัส:
    //*****************
    // BEGIN SEND CHANGES TO SQL SERVER 
    
    SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors);
    daAuthors.Update(dsPubs, "Authors");
    Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
    Console.ReadLine();
    
    // END SEND CHANGES TO SQL SERVER
    					
  8. เมื่อต้องการลบแถวทั้งหมด ใช้วิธีการลบของออบเจ็กต์ข้อมูลแถว โปรดสังเกตว่า คอลเลกชันของแถวที่ประกอบด้วยวิธีการสองวิธีเอาออกและRemoveAtซึ่งดูเหมือนจะลบแถว แต่เอาแทน การ rowfrom คอลเลกชัน เพียงลบวิธีการส่งการลบของคุณกลับไปยังฐานข้อมูลต้นฉบับ วางรหัส thefollowing หลังจากส่งการเปลี่ยนแปลงกับ SQL SERVER รหัส:
    //*****************
    //BEGIN DELETE CODE 
    
    drCurrent = tblAuthors.Rows.Find("993-21-3427");
    drCurrent.Delete();
    Console.WriteLine("Record deleted successfully, Click any key to continue!!"); 
    Console.ReadLine();
    
    //END DELETE CODE 
    					
  9. ส่งการเปลี่ยนแปลงกับ SQL Server เมื่อต้องการเอา thatyou ระเบียนที่เพิ่มก่อนหน้านี้ วางรหัสต่อไปนี้หลังจากลบรหัส:
    //*****************
    // CLEAN UP SQL SERVER
    daAuthors.Update(dsPubs, "Authors");
    Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
    Console.ReadLine();
    					
  10. บันทึกโครงการของคุณ
  11. บนเมนูการตรวจแก้จุดบกพร่องคลิกเริ่มเพื่อเรียกใช้โครงการ ขอให้สังเกตว่ากล่องข้อความต่าง ๆ ที่ปรากฏขึ้น ซึ่งบ่งชี้ความคืบหน้าของรหัส และช่วยให้คุณสามารถตรวจทาน currentstate แบบของข้อมูลที่เป็นความก้าวหน้าของรหัส

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

using System;
using System.Data;
using System.Data.SqlClient;

namespace PopulateDataSet
{

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            string sConnectionString;

            // Modify the following string to correctly connect to your SQL Server.
            sConnectionString = "Password=;User ID=sa;"
                + "Initial Catalog=pubs;"
                + "Data Source=(local)";

            SqlConnection objConn
                = new SqlConnection(sConnectionString);
            objConn.Open();

            // Create an instance of a DataAdapter.
            SqlDataAdapter daAuthors 
                = new SqlDataAdapter("Select * From Authors", objConn);

            // Create an instance of a DataSet, and retrieve 
            // data from the Authors table.
            DataSet dsPubs = new DataSet("Pubs");
            daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
            daAuthors.Fill(dsPubs,"Authors"); 
            //****************
            // BEGIN ADD CODE 
            // Create a new instance of a DataTable.
            DataTable tblAuthors;
            tblAuthors = dsPubs.Tables["Authors"];

            DataRow drCurrent;
            // 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.
            tblAuthors.Rows.Add(drCurrent);
            Console.WriteLine("Add was successful, Click any key to continue!!");
            Console.ReadLine();

            // 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();
            Console.WriteLine("Record edited successfully, Click any key to continue!!");
            Console.ReadLine();
			
            // END EDIT CODE   
            //*****************
            // BEGIN SEND CHANGES TO SQL SERVER 

            SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daAuthors);
            daAuthors.Update(dsPubs, "Authors");
            Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
            Console.ReadLine();
			
            // END SEND CHANGES TO SQL SERVER 
            //*****************
            //BEGIN DELETE CODE 

            drCurrent = tblAuthors.Rows.Find("993-21-3427");
            drCurrent.Delete();
            Console.WriteLine("SRecord deleted successfully, Click any key to continue!!"); 
            Console.ReadLine();
       
            //END DELETE CODE  
            //*****************
            // CLEAN UP SQL SERVER
            daAuthors.Update(dsPubs, "Authors");
            Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
            Console.ReadLine();         	
			
        }
    }
}
				

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ADO.NET วัตถุชุดข้อมูลและ SQL เยี่ยมชมเว็บไซต์ต่อไปนี้ของ Microsoft:
เจาะลึกลงในการเข้าถึงข้อมูล (มีเสียงที่ MSDNคอลัมน์)
http://msdn2.microsoft.com/en-us/library/ms810288.aspx
ADO.NET for the ADO Programmer
http://msdn.microsoft.com/en-us/library/ms973217.aspx
MSDN Online .NET Developer Center
http://msdn2.microsoft.com/en-us/netframework/default.aspx

คุณสมบัติ

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

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

 

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