Vložení nových záznamů do databáze v aplikacích .NET Framework

Při vkládání nových záznamů do databáze s ADO.NET v projektu rozhraní .NET Framework je běžným přístupem použití metod TableAdapter . Objekty TableAdapter umožňují komunikaci mezi vaší aplikací a databází. Poskytují různé způsoby vložení nových záznamů do databáze v závislosti na požadavcích vaší aplikace. Můžete použít metodu TableAdapter.Update nebo jednu z metod TableAdapter DBDirect (konkrétně metodu TableAdapter.Insert ).

Tento článek popisuje, jak vložit záznamy do databáze pro aplikaci sestavenou pomocí ADO.NET a rozhraní .NET Framework pomocí jazyka Visual Basic (VB) nebo C#. Pokud vaše konfigurace aplikace používá Entity Framework 6, přečtěte si téma Přidání nové entity do kontextu nebo Entity Framework Core, viz Přidání dat.

Poznámka:

Datové sady a související třídy jsou staršími technologiemi rozhraní .NET Framework z počátku 2000, které aplikacím umožňují pracovat s daty v paměti, zatímco aplikace jsou odpojené od databáze. Tyto technologie jsou zvláště užitečné pro aplikace, které uživatelům umožňují upravovat data a uchovávat změny zpět do databáze. I když se datové sady ukázaly jako velmi úspěšná technologie, doporučujeme, aby nové aplikace .NET používaly Entity Framework Core. Entity Framework poskytuje přirozenější způsob práce s tabulkovými daty jako objektovými modely a má jednodušší programovací rozhraní.

Požadavky

  • Pokud chcete pracovat s metodami TableAdapter, musíte mít dostupnou instanci. Další informace naleznete v tématu Vytváření a konfigurace objektů TableAdapter v aplikacích rozhraní .NET Framework.

  • Zabezpečení .NET: Musíte mít přístup k databázi, ke které se pokoušíte připojit, a oprávnění k provedení vložení do požadované tabulky.

Volba metody vložení

Existují různé přístupy k vkládání záznamů do databáze na základě scénáře vaší aplikace. Následující tabulka shrnuje možnosti:

Scénář Přístup Notes
Aplikace používá datové sady k ukládání dat. K odeslání všech změn do databáze použijte metodu TableAdapter.Update . Mezi změny patří aktualizace, vložení a odstranění.
Aplikace používá objekty k ukládání dat. Použití metody TableAdapter.Insert k vložení nových záznamů do databáze Díky tomuto přístupu můžete mít přesnou kontrolu nad vytvářením nových záznamů.
Aplikace používá TableAdaptery, Insert metoda není k dispozici. Nastavte vlastnost TableAdapter GenerateDBDirectMethods z true Návrháře datových sad a uložte datovou sadu, aby se znovu vygeneruje objekt TableAdapter. Pokud váš TableAdapter nemá metodu Insert , TableAdapter je buď nakonfigurován pro použití uložených procedur, nebo GenerateDBDirectMethods je vlastnost nastavena na false.
Insert Pokud metoda po opětovném vygenerování objektu TableAdapter zůstane nedostupná, tabulka pravděpodobně neposkytuje dostatek informací o schématu k rozlišení mezi jednotlivými řádky (například nemusí existovat žádný primární klíč nastavený v tabulce).
Aplikace nepoužívá tableAdaptery Vložení nových záznamů do databáze pomocí objektů příkazů Příklad: SqlCommand

Vložení nových záznamů pomocí objektů TableAdapter

Pokud vaše aplikace k ukládání dat používá datové sady, můžete do požadované DataTable datové sady přidat nové záznamy a pak metodu TableAdapter.Update volat. Metoda TableAdapter.Update odešle všechny změny v DataTable databázi, včetně upravených a odstraněných záznamů.

Vložení nových záznamů pomocí metody TableAdapter.Update

Následující postup ukazuje, jak vložit nové záznamy do databáze pomocí TableAdapter.Update metody:

  1. Přidejte do požadovaného objektu DataTable nové záznamy tak, že vytvoříte nový DataRow a přidáte ho Rows do kolekce.

  2. Po přidání nových řádků do DataTablemetody zavolejte metodu TableAdapter.Update . Množství dat, která se mají aktualizovat, můžete řídit předáním jedné z následujících hodnot parametrů:

    Následující kód ukazuje, jak přidat nový záznam do DataTable a potom volat metodu TableAdapter.Update pro uložení nového řádku do databáze. Tento příklad používá Region tabulku v databázi Northwind.

    // Create a new row.
    NorthwindDataSet.RegionRow newRegionRow;
    newRegionRow = northwindDataSet.Region.NewRegionRow();
    newRegionRow.RegionID = 5;
    newRegionRow.RegionDescription = "NorthWestern";
    
    // Add the row to the Region table
    this.northwindDataSet.Region.Rows.Add(newRegionRow);
    
    // Save the new row to the database
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Vložení nových záznamů pomocí metody TableAdapter.Insert

Pokud vaše aplikace k ukládání dat používá objekty, můžete pomocí TableAdapter.Insert této metody vytvořit nové řádky přímo v databázi. Metoda Insert přijímá jednotlivé hodnoty pro každý sloupec jako parametry. Při volání metody se do databáze vloží nový záznam s předanými hodnotami parametrů.

  • Zavolejte metodu TableAdapter Insert a předejte hodnoty pro každý sloupec jako parametry.

Následující postup ukazuje, jak použít metodu TableAdapter.Insert pro vložení řádků. Tento příklad vloží data do Region tabulky v databázi Northwind.

Poznámka:

Pokud nemáte k dispozici instanci, vytvořte instanci objektu TableAdapter, který chcete použít.

NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
    new NorthwindDataSetTableAdapters.RegionTableAdapter();

regionTableAdapter.Insert(5, "NorthWestern");

Vložení nových záznamů s objekty příkazů

Nové záznamy můžete do databáze vložit přímo pomocí objektů příkazů.

  • Vytvořte nový objekt příkazu a nastavte jeho Connection, CommandTypea CommandText vlastnosti.

Následující postup ukazuje, jak vložit záznamy do databáze pomocí objektu příkazu. Tento příklad vloží data do Region tabulky v databázi Northwind.

System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();