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. , InsertCommandnebo vlastnosti musí být nastaveny před UpdateCommand zavolání metodyDeleteCommand, v závislosti na tom, jaké změny byly provedeny v datech v objektu Update.DataAdapterDataTable Pokud byly například přidány řádky, InsertCommand musí být nastavena před voláním Update. Při Update zpracování vloženého, aktualizovaného nebo odstraněného řádku DataAdapter použije příslušná Command vlastnost ke zpracování akce. Aktuální informace o upraveném řádku se předají objektu CommandParameters prostřednictvím kolekce.
Když aktualizujete řádek ve zdroji dat, zavoláte příkaz UPDATE, 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 Jazyka 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 pro předchozí ukázkový příkaz UPDATE. 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;
Add Metoda Parameters kolekce přebírá název parametru, datový typ, velikost (pokud je k dispozici pro typ) a název z objektu SourceColumnDataTable. Všimněte si, že SourceVersion parametr @CustomerID je nastaven na Originalhodnotu . To zaručuje, že existující řádek ve zdroji dat se aktualizuje, pokud se hodnota identifikačního sloupce nebo sloupců v upraveném sloupci změnila DataRow. 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. Parametr SourceVersion@CompanyName není nastaven a používá výchozí Current hodnotu řádku.
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
Tento SourceColumn parametr může SourceVersion být předán jako argumenty konstruktoru Parameter nebo nastaven jako vlastnosti existujícího Parameter. Jedná se SourceColumn o název DataColumn místa, kde DataRow se načte hodnota objektu 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. |
Příklad SqlClient kódu v další části definuje parametr, UpdateCommand ve kterém CustomerID se sloupec používá jako SourceColumn 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 CustomerIDSourceColumn se použije hodnota s SourceVersionCurrent Parametr @OldCustomerID slouží k identifikaci aktuálního řádku ve zdroji dat. Vzhledem k tomu, že odpovídající hodnota sloupce se nachází ve Original verzi řádku, použije se stejná SourceColumn hodnota (CustomerID) s hodnotou of 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;
}