Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: .NET Framework
.NET
Standard
Má DbDataAdapter čtyři vlastnosti, které se používají k načtení dat ze zdroje dat a aktualizaci dat: SelectCommand vlastnost vrací data ze zdroje dat; a , a InsertCommandUpdateCommandDeleteCommand vlastnosti se používají ke správě změn ve zdroji dat.
Poznámka:
Vlastnost SelectCommand musí být nastavena před voláním Fill metody DataAdapter. Vlastnosti InsertCommand, UpdateCommand nebo DeleteCommand musí být nastaveny před voláním metody Update objektu DataAdapter v závislosti na tom, jaké změny byly provedeny v datech v objektu DataTable. Pokud byly například přidány řádky, InsertCommand musí být nastavena před voláním Update. Když Update zpracovává vložený, aktualizovaný nebo odstraněný řádek, DataAdapter používá ke zpracování této akce příslušnou vlastnost Command. Aktuální informace o upraveném řádku se předávají objektu Command prostřednictvím kolekce Parameters.
Když aktualizujete řádek ve zdroji dat, zavoláte UPDATE příkaz, který používá jedinečný identifikátor k identifikaci řádku v tabulce, který se má aktualizovat. Jedinečný identifikátor je obvykle hodnota pole primárního klíče. Příkaz UPDATE používá parametry, které obsahují jedinečný identifikátor i sloupce a hodnoty, které se mají aktualizovat, jak je znázorněno v následujícím příkazu Transact-SQL.
UPDATE Customers SET CompanyName = @CompanyName
WHERE CustomerID = @CustomerID
Poznámka:
Syntaxe zástupných symbolů parametrů závisí na zdroji dat. Tento příklad ukazuje zástupné symboly pro zdroj dat SQL Serveru.
V tomto příkladu CompanyName se pole aktualizuje hodnotou parametru @CompanyName pro řádek, kde CustomerID se rovná hodnotě parametru @CustomerID . Parametry načítají informace z upraveného řádku pomocí SourceColumn vlastnosti objektu SqlParameter . Níže jsou uvedené parametry předchozího ukázkového UPDATE příkazu. Kód předpokládá, že proměnná adapter představuje platný SqlDataAdapter objekt.
// Assumes that connection is a valid SqlAdapter object
adapter.UpdateCommand.Parameters.Add("@CompanyName",
SqlDbType.VarChar, 15, "CompanyName");
SqlParameter parameter = adapter.UpdateCommand.Parameters.Add("@CustomerID",
SqlDbType.Char, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;
Metoda Add kolekce Parameters přijímá název parametru, datový typ, velikost (pokud se na daný typ vztahuje) a název SourceColumn z DataTable. Všimněte si, že SourceVersion parametru @CustomerID je nastavena na Original. To zaručuje, že se existující řádek ve zdroji dat aktualizuje, pokud byla v upraveném DataRow změněna hodnota identifikačního sloupce nebo sloupců. V takovém případě Original by hodnota řádku odpovídala aktuální hodnotě ve zdroji dat a Current hodnota řádku by obsahovala aktualizovanou hodnotu. Položka SourceVersion pro parametr @CompanyName není nastavena a používá se výchozí hodnota z řádku Current.
Poznámka:
Pro U operací Fill a metod DataAdapterGet je typ .NET odvozen z typu vráceného poskytovatelem dat Microsoft SqlClient pro SQL Server. Odvozené typy rozhraní .NET a metody příslušenství pro datové typy Microsoft SQL Serveru jsou popsány v mapování datových typů v ADO.NET.
Parameter.SourceColumn, Parameter.SourceVersion
SourceColumn a SourceVersion mohou být předány jako argumenty konstruktoru Parameter nebo nastaveny jako vlastnosti existujícího Parameter.
SourceColumn je název DataColumn z DataRow, kde bude načtena hodnota Parameter.
SourceVersion Určuje DataRow verzi, kterou DataAdapter používá k načtení hodnoty.
Následující tabulka uvádí hodnoty výčtu DataRowVersion , které jsou k dispozici pro použití s SourceVersion.
| DataRowVersion – výčet | Description |
|---|---|
Current |
Parametr používá aktuální hodnotu sloupce. Toto je výchozí hodnota. |
Default |
Parametr používá DefaultValue sloupec. |
Original |
Parametr používá původní hodnotu sloupce. |
Proposed |
Parametr používá navrženou hodnotu. |
Ukázka kódu SqlClient v následující části definuje parametr pro UpdateCommand, v němž se sloupec CustomerID používá jako SourceColumn pro dva parametry: @CustomerID (SET CustomerID = @CustomerID) a @OldCustomerID (WHERE CustomerID = @OldCustomerID). Parametr @CustomerID slouží k aktualizaci sloupce CustomerID na aktuální hodnotu v DataRowsouboru . V důsledku toho se použije CustomerIDSourceColumn s SourceVersionCurrent Parametr @OldCustomerID slouží k identifikaci aktuálního řádku ve zdroji dat. Protože se odpovídající hodnota sloupce nachází ve verzi Original řádku, použije se stejná SourceColumn (CustomerID) s hodnotou SourceVersionOriginal.
Práce s parametry SqlClient
Následující příklad ukazuje, jak vytvořit SqlDataAdapter a nastavit MissingSchemaAction na hodnotu AddWithKey , aby bylo možné načíst další informace o schématu z databáze. Objekty SelectCommand, , InsertCommandUpdateCommanda DeleteCommand vlastnosti jsou nastaveny a jejich odpovídající SqlParameter objekty přidány do Parameters kolekce. Metoda vrátí SqlDataAdapter objekt.
public static SqlDataAdapter CreateSqlDataAdapter(SqlConnection connection)
{
// Assumes that connection is a valid SqlConnection object
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
// Create the commands.
adapter.SelectCommand = new SqlCommand(
"SELECT CustomerID, CompanyName FROM CUSTOMERS", connection);
adapter.InsertCommand = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", connection);
adapter.UpdateCommand = new SqlCommand(
"UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", connection);
adapter.DeleteCommand = new SqlCommand(
"DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);
// Create the parameters.
adapter.InsertCommand.Parameters.Add("@CustomerID",
SqlDbType.Char, 5, "CustomerID");
adapter.InsertCommand.Parameters.Add("@CompanyName",
SqlDbType.VarChar, 40, "CompanyName");
adapter.UpdateCommand.Parameters.Add("@CustomerID",
SqlDbType.Char, 5, "CustomerID");
adapter.UpdateCommand.Parameters.Add("@CompanyName",
SqlDbType.VarChar, 40, "CompanyName");
adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
SqlDbType.Char, 5, "CustomerID").SourceVersion =
DataRowVersion.Original;
adapter.DeleteCommand.Parameters.Add("@CustomerID",
SqlDbType.Char, 5, "CustomerID").SourceVersion =
DataRowVersion.Original;
return adapter;
}