Sdílet prostřednictvím


SqlDataAdapter Třída

Definice

Představuje sadu datových příkazů a připojení k databázi, které se používají k vyplnění DataSet a aktualizaci SQL Server databáze. Tuto třídu nelze dědit.

public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable, System::Data::IDataAdapter, System::Data::IDbDataAdapter
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, ICloneable, System.Data.IDataAdapter, System.Data.IDbDataAdapter
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, ICloneable
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter
type SqlDataAdapter = class
    inherit DbDataAdapter
    interface IDbDataAdapter
    interface IDataAdapter
    interface ICloneable
type SqlDataAdapter = class
    inherit DbDataAdapter
    interface IDataAdapter
    interface IDbDataAdapter
    interface ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable, IDataAdapter, IDbDataAdapter
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Dědičnost
SqlDataAdapter
Implementuje

Příklady

Následující příklad používá SqlCommand, SqlDataAdaptera SqlConnection k výběru záznamů z databáze a naplnění DataSet objektu vybranými řádky. Vyplněná DataSet hodnota se pak vrátí. K tomu se metodě předá inicializovaný DataSetpřipojovací řetězec a řetězec dotazu, který je příkazem Select jazyka Transact-SQL.

using Microsoft.Data.SqlClient;
using System.Xml;
using System.Data.Common;
using System.Windows.Forms;

public class Form1 : Form
{
    protected DataSet DataSet1;
    protected DataGrid dataGrid1;

    private static DataSet SelectRows(DataSet dataset,
        string connectionString, string queryString)
    {
        using (SqlConnection connection =
            new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(
                queryString, connection);
            adapter.Fill(dataset);
            return dataset;
        }
    }
}

Poznámky

Slouží SqlDataAdapterjako most mezi DataSet a SQL Server pro načítání a ukládání dat. Poskytuje SqlDataAdapter tento most mapováním Fill, které změní data v DataSet souboru tak, aby odpovídala datům ve zdroji dat, a Update, které změní data ve zdroji dat tak, aby odpovídala datům v DataSet, pomocí příslušných příkazů Jazyka Transact-SQL vůči zdroji dat. Aktualizace se provádí po řádcích. Pro každý vložený, upravený a odstraněný řádek Update určuje metoda typ změny, která byla na řádku provedena (Insert, Updatenebo Delete). V závislosti na typu změny Insertse spustí šablona příkazu , Updatenebo Delete , která rozšíří upravený řádek do zdroje dat. Když vyplní SqlDataAdapterDataSet, vytvoří potřebné tabulky a sloupce pro vrácená data, pokud ještě neexistují. Informace o primárním klíči však nejsou zahrnuty do implicitně vytvořeného schématu, pokud MissingSchemaAction vlastnost není nastavena na AddWithKeyhodnotu . Před vyplněním dat pomocí FillSchemamůžete také SqlDataAdapter vytvořit schéma DataSet, včetně informací o primárním klíči. Další informace najdete v tématu Přidání existujících omezení do datové sady.

SqlDataAdapterse používá ve spojení s SqlConnection a SqlCommand ke zvýšení výkonu při připojování k databázi SQL Server.

Poznámka

Pokud používáte SQL Server uložené procedury k úpravě nebo odstranění dat pomocí DataAdapter, ujistěte se, že v definici uložené procedury nepoužíváte SET NOCOUNT ON. To způsobí, že počet ovlivněných řádků se vrátí na nulu, což DataAdapter interpretuje jako konflikt souběžnosti. V takovém případě DBConcurrencyException bude vyvolán objekt .

Obsahuje SqlDataAdapterSelectCommandtaké vlastnosti , InsertCommand, DeleteCommand, UpdateCommanda TableMappings pro usnadnění načítání a aktualizace dat.

Při vytvoření instance objektu SqlDataAdapter jsou vlastnosti pro čtení a zápis nastaveny na počáteční hodnoty. Seznam těchto hodnot naleznete v konstruktoru SqlDataAdapter .

, InsertCommandDeleteCommanda UpdateCommand jsou obecné šablony, které se automaticky vyplní jednotlivými hodnotami z každého upraveného řádku prostřednictvím mechanismu parametrů.

Pro každý sloupec, který rozšíříte do zdroje dat v Update, by měl být do , UpdateCommandnebo DeleteCommandpřidán InsertCommandparametr . Vlastnost SourceColumn objektu DbParameter by měla být nastavena na název sloupce. Toto nastavení označuje, že hodnota parametru není nastavena ručně, ale je převzata z konkrétního sloupce v aktuálně zpracovaném řádku.

Poznámka

K InvalidOperationException chybě dojde, Fill pokud je volána metoda a tabulka obsahuje uživatelem definovaný typ, který není k dispozici v klientském počítači. Další informace najdete v tématu Typy User-Defined CLR.

Konstruktory

SqlDataAdapter()

Inicializuje novou instanci SqlDataAdapter třídy .

SqlDataAdapter(SqlCommand)

Inicializuje novou instanci SqlDataAdapter třídy se zadanou SqlCommand jako SelectCommand vlastnost .

SqlDataAdapter(String, SqlConnection)

Inicializuje novou instanci SqlDataAdapter třídy s objektem SelectCommandSqlConnection a .

SqlDataAdapter(String, String)

Inicializuje novou instanci SqlDataAdapter třídy s SelectCommand a připojovací řetězec.

Vlastnosti

DeleteCommand

Získá nebo nastaví Transact-SQL příkaz nebo uložená procedura odstranit záznamy z datové sady.

InsertCommand

Získá nebo nastaví Transact-SQL příkaz nebo uložená procedura pro vložení nových záznamů do zdroje dat.

SelectCommand

Získá nebo nastaví Transact-SQL příkaz nebo uložená procedura slouží k výběru záznamů ve zdroji dat.

UpdateBatchSize

Získá nebo nastaví počet řádků, které jsou zpracovány v každém odezvě na server.

UpdateCommand

Získá nebo nastaví Transact-SQL příkaz nebo uložená procedura slouží k aktualizaci záznamů ve zdroji dat.

Událost

RowUpdated

Vyvolá se během Update(DataSet) po provedení příkazu proti zdroji dat. Pokus o aktualizaci se provede, takže se událost aktivuje.

RowUpdating

Vyskytuje se během Update(DataSet) před provedením příkazu proti zdroji dat. Pokus o aktualizaci se provede, takže se událost aktivuje.

Explicitní implementace rozhraní

ICloneable.Clone()

Popis tohoto člena najdete v tématu Clone().

IDbDataAdapter.DeleteCommand

Popis tohoto člena najdete v tématu DeleteCommand.

IDbDataAdapter.InsertCommand

Popis tohoto člena najdete v tématu InsertCommand.

IDbDataAdapter.SelectCommand

Popis tohoto člena najdete v tématu SelectCommand.

IDbDataAdapter.UpdateCommand

Popis tohoto člena najdete v tématu UpdateCommand.

Platí pro