K aktualizaci databáze z objektu DataSet pomocí Visual C# 2005 nebo Visual C# .NET

Překlady článku Překlady článku
ID článku: 307587 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek ukazuje, jak se objekt DataSet , který obsahuje data (což je načtena z databáze), úprava dat a odeslání zpět do databáze k aktualizaci původního zdroje.

Objektech DataSet , klíčovou součástí přístupu k datům v Microsoft rozhraní.NET Framework, jsou objekty v paměti, které mohou obsahovat tabulky, zobrazení a vztahy.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Microsoft Windows Server 2003, Microsoft Windows 2000Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 AdvancedServer nebo Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server verze 7.0, Microsoft SQL Server2000 nebo Microsoft Data Engine (MSDE) s PUBS ukázky databaseinstalled
  • Microsoft Visual Studio 2005 nebo Microsoft Visual Studio.NET
Tento článek předpokládá, že jste obeznámeni s následující tématy:
  • Databázové terminologii
  • Structured Query Language (SQL)

K aktualizaci databáze z objektu DataSet

Tento oddíl ukazuje, jak použít objekt DataSet aktualizace dat v databázi. Je důležité mít na paměti, že můžete také použít SqlCommand objekt vložit, aktualizovat a odstranit data v databázi přímo.

Abyste lépe pochopili Tento článek, klepněte na následující číslo článku znalostní báze Microsoft Knowledge Base:
314145 Jak naplnit objekt DataSet z databáze pomocí Visual C# .NET
Některá z témat, které jsou uvedeny v 314145 zahrnují jak načíst data z databáze a datové sadya jak objekt DataSet je samostatná a oddělená od databáze.

Po načtení sady dat můžete data upravit. Tyto změny budou sledovat objekt DataSet . Objekt DataSet lze považovat nediskové mezipaměti dat, která je načtena z databáze. Objekt DataSet obsahuje kolekce tabulek, relace a omezení.

Chcete-li aktualizaci DataSet a odeslat aktualizace databáze, postupujte takto:
  1. Spusťte aplikaci Visual Studio 2005 nebo Visual Studio .NET.
  2. Vytvoření nové aplikace konzoly v jazyce Visual C#. Visual Studio vytvoří statické třídy ve výchozím nastavení a prázdné procedury Main() .
  3. Ujistěte se, zda projekt obsahuje odkaz na systém a System.Data obory názvů. Použijte příkaz using na systém, System.Dataa System.Data.SqlClient obory názvů, takže není nutné kvalifikovat declarationsfrom těchto oborů názvů později v kódu. Musíte použít tyto příkazy priorto ostatními deklaracemi.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  4. Před změnit data a odeslat změny backto databáze je nutné načíst informace do objektu DataSet. Podrobný postup naleznete v tématu314145. Aby se zabránilo zdvojení kód v této stepis podrobně uvedeny nejsou.

    Připojovací řetězec v bodech followingcode na serveru SQL Server je umístěn na místním počítači (nebo thecomputer, kde je spuštěn kód) do shrnutí, je připojení vytvořeno, andthen datový adaptér je vytvořen, který se používá pro výplň DataSet s daty.
    Poznámka: Je nutné změnit uživatelské jméno <username>a heslo<strongpassword> na správné hodnoty před spuštěním tohoto kódu. Přesvědčte se, zda thatUser ID má příslušná oprávnění k provedení této operace na thedatabase.</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. Nyní, načtení dat, můžete ji upravit. Tam aremany způsoby přidání řádku (nebo záznamu). Tento příklad kódu používá tři stepprocedure:
    • Získejte nový objekt DataRow v DataTable.
    • Podle potřeby nastavte hodnoty pole DataRow .
    • Tento nový objekt předáte do metody Add kolekce DataTable.Rows .
    Vložte následující kód po kódu v kroku 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. Chcete-li upravit existující řádky, získat příslušný objekt DataRow a potom zadejte nové hodnoty pro jeden nebo více sloupců. Youmust nejprve najít správný řádek, který je mnohem jednodušší, protože načíst theschema v tabulce jako data (volání FillSchema v kroku 4). V tabulce se schématem na místě, ví whichcolumn její primární klíč, a Najít metodu kolekce řádků je k dispozici.

    Najít metoda vrátí objekt DataRow s určitou hodnotu ve svém primárním klíči (v tomto případě au_id). Po které DataRow, můžete upravit sloupce. Není nutné zalomit BeginEdit a EndEditthemodifications, ale to zjednodušuje práci, že DataSet musí provést a umožňuje DataSet své ověřovací kontroly současně provádět při volání EndEdit . Vložte následující kód po kódu přidat:
    //*****************
    // 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. Všechny tyto změny aktualizovat původní databáze, předáte do Aktualizovat metodu DataAdapter objektu DataSet .

    Než budete moci volat Update, však musí nastavit událost InsertCommand, UpdateCommanda DeleteCommand vlastnosti DataAdapter objektu. Ruční zápis SQL a naplnění těchto threeproperties s odpovídající objekty SqlCommand , ale také umožňuje aplikace Visual Studio .NET generatethese tři příkazy automaticky.

    Generovat požadované commandswhen, které jsou potřeba, musíte vytvořit instanci SqlCommandBuilder objekt a použijte DataAdapter v konstruktoru. Pokud chcete použít tuto metodu, která isillustrated v ukázce kódu dodržovat, musí mít informationavailable primárního klíče pro tabulku. Pro přístup k informace o primárním klíči, volání FillSchemaa nastavte MissingSchemaAction vlastnost DataAdapter vaše na AddWithKeynebo primární klíč nastavit ručně v kódu. Vložte kód thefollowing po úpravy kódu:
    //*****************
    // 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. Řádek zcela odstranit, použijte metodu Odstranění objektu DataRow . Všimněte si, že kolekce řádků obsahuje dvě metody Odebrat a RemoveAt, které se zdají odstraníte řádek, ale místo toho odebrat právě rowfrom kolekce. Pouze Odstranit metodu odstranění odešle zpět do zdrojové databáze. Po odeslání změn na SERVER SQL kódu, vložte kód thefollowing:
    //*****************
    //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. Odešlete změny na serveru SQL Server odstranit záznam spočítačovým, dříve přidali. Po odstranění kódu vložte následující kód:
    //*****************
    // CLEAN UP SQL SERVER
    daAuthors.Update(dsPubs, "Authors");
    Console.WriteLine("SQL Server updated successfully, Check Server explorer to see changes");
    Console.ReadLine();
    					
  10. Uložte projekt.
  11. V nabídce Debug klepněte na tlačítko Start ke spuštění projektu. Všimněte si, že se zobrazí několik oken zpráv, určení průběhu kód, který umožňuje zobrazit data v průběhu kód hodnota vlastnosti currentstate.

Úplný výpis kódu

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();         	
			
        }
    }
}
				

Odkazy

Další informace o použití rozhraní ADO.NET DataSet objekty a SQL, naleznete na následujících webech společnosti Microsoft:
Začte přístup k datům (sloupec Hlasy MSDN )
http://msdn2.microsoft.com/en-us/library/ms810288.aspx
Technologie ADO.NET pro 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

Vlastnosti

ID článku: 307587 - Poslední aktualizace: 28. října 2013 - Revize: 9.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Klíčová slova: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB307587 KbMtcs
Strojově přeložený článek
DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.
Projděte si také anglickou verzi článku: 307587

Dejte nám zpětnou vazbu

 

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