Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik: .NET Framework
.NET .NET
Standard
A DbDataAdapter tulajdonság négy tulajdonsággal rendelkezik, amelyek adatokat kérnek le és frissítenek az adatforrásba: a SelectCommand tulajdonság adatokat ad vissza az adatforrásból, a InsertCommand , UpdateCommandés DeleteCommand a tulajdonságok pedig az adatforrás módosításainak kezelésére szolgálnak.
Megjegyzés:
A(z) SelectCommand tulajdonságot be kell állítani, mielőtt meghívja a(z) FillDataAdapter metódusát. A InsertCommand, UpdateCommand vagy DeleteCommand tulajdonságok egyikét a UpdateDataAdapter metódusának meghívása előtt kell beállítani, attól függően, hogy a DataTable adataiban milyen módosítások történtek. Ha például sorokat adott hozzá, a(z) InsertCommand elemet be kell állítani, mielőtt meghívja a(z) Update elemet. Amikor Update egy beszúrt, frissített vagy törölt sort dolgoz fel, a művelet feldolgozásához a DataAdapter megfelelő Command tulajdonságot használja. A módosított sor aktuális információi a gyűjteményen keresztül jutnak el az Command objektumhoz Parameters .
Amikor frissít egy sort az adatforrásban, meghívja az UPDATE utasítást, amely egyedi azonosítóval azonosítja a frissíteni kívánt táblázat sorát. Az egyedi azonosító általában egy elsődleges kulcsmező értéke. Az UPDATE utasítás olyan paramétereket használ, amelyek tartalmazzák az egyedi azonosítót, valamint a frissíteni kívánt oszlopokat és értékeket, ahogyan az az alábbi Transact-SQL utasításban is látható.
UPDATE Customers SET CompanyName = @CompanyName
WHERE CustomerID = @CustomerID
Megjegyzés:
A paraméterhelyőrzők szintaxisa az adatforrástól függ. Ez a példa egy SQL Server-adatforrás helyőrzőit mutatja be.
Ebben a példában a CompanyName mezőt a @CompanyName paraméter értékével frissítjük annál a sornál, ahol CustomerID megegyezik a @CustomerID paraméter értékével. A paraméterek a módosított sorból a SourceColumn objektum SqlParameter tulajdonságának használatával nyernek ki információt. Az előző mintautasítás UPDATE paraméterei a következők. A kód feltételezi, hogy a változó adapter érvényes SqlDataAdapter objektumot jelöl.
// 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;
A Add gyűjtemény metódusa Parameters a paraméter nevét, az adattípust, a méretet (ha alkalmazható a típusra) és a SourceColumn forrás nevét DataTableveszi fel. Figyelje meg, hogy a SourceVersion@CustomerID paraméter beállítása a következőre Originalvan állítva: . Ez garantálja, hogy az adatforrás meglévő sora frissül, ha az azonosító oszlop vagy oszlopok értéke módosult a módosított DataRowfájlban. Ebben az esetben a Original sor értéke megegyezik az adatforrás aktuális értékével, a Current sor értéke pedig a frissített értéket tartalmazza. A(z) SourceVersion paraméterhez tartozó @CompanyName nincs beállítva, ezért az alapértelmezett, Current sorértéket használja.
Megjegyzés:
A .NET-típus mind a FillDataAdapterGet műveletek, mind a DataReadermetódusok esetében az SQL Server Microsoft SqlClient adatszolgáltatójától visszaadott típusból származik. A Microsoft SQL Server-adattípusok kikövetkeztetett .NET-típusait és kiegészítő módszereit a ADO.NET adattípus-leképezései ismertetik.
Paraméter.SourceColumn, Paraméter.SourceVersion
Az SourceColumn és SourceVersion átadható argumentumként a Parameter konstruktornak, vagy megadható egy meglévő Parametertulajdonságaként. A(z) SourceColumn annak a DataColumn elemnek a neve a(z) DataRow-ben, amelyből a(z) Parameter értéke le lesz kérve. A(z) SourceVersion megadja a(z) DataRow azon verzióját, amelyet a DataAdapter az érték lekérésére használja.
Az alábbi táblázat a DataRowVersion használatához elérhető SourceVersion felsorolási értékeket mutatja be.
| DataRowVersion felsorolás | Description |
|---|---|
Current |
A paraméter az oszlop aktuális értékét használja. Ez az alapértelmezett érték. |
Default |
A paraméter az DefaultValue oszlopot használja. |
Original |
A paraméter az oszlop eredeti értékét használja. |
Proposed |
A paraméter egy javasolt értéket használ. |
A következő szakaszban található SqlClient kódpélda egy UpdateCommand paraméterét határozza meg, amelyben az CustomerID oszlopot két paraméter SourceColumn-jaként használják: @CustomerID (SET CustomerID = @CustomerID) és @OldCustomerID (WHERE CustomerID = @OldCustomerID). A @CustomerID paraméter a CustomerID oszlop frissítésére szolgál az aktuális értékre a DataRow-ben. Ennek eredményeként a(z) CustomerIDSourceColumn, SourceVersionCurrent értékkel, használatos. A @OldCustomerID paraméter az adatforrás aktuális sorának azonosítására szolgál. Mivel az egyező oszlopérték a sor Original verziójában található, ugyanaz a SourceColumn (CustomerID) használatos, amelynek SourceVersion értéke Original.
SqlClient-paraméterek használata
Az alábbi példa bemutatja, hogyan hozhat létre egy SqlDataAdapter elemet, és hogyan állíthatja a MissingSchemaAction értékét AddWithKey értékre további sémainformációk lekéréséhez az adatbázisból. A SelectCommand, InsertCommand, UpdateCommand és DeleteCommand tulajdonságok be vannak állítva, és a megfelelő SqlParameter objektumok hozzá vannak adva a Parameters gyűjteményhez. A metódus egy objektumot SqlDataAdapter ad vissza.
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;
}