Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 SelectCommand tulajdonságot a metódus meghívása FillDataAdapterelőtt be kell állítani. A InsertCommand, UpdateCommandvagy DeleteCommand tulajdonságokat a Update metódus meghívása DataAdapter előtt kell beállítani attól függően, hogy milyen módosításokat hajtottak végre az adatokon a DataTable. Ha például sorokat ad hozzá, a hívás InsertCommandelőtt be kell állítani.Update 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 az objektum tulajdonságával SourceColumn kérik le az adatokat a SqlParameter módosított sorból. Az előző UPDATE-utasítás 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 SourceVersion paraméter értéke @CompanyName nincs beállítva, és az alapértelmezett sorértéket Current 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. Ez SourceColumn annak a DataColumn névnek a neve, amelyből a DataRow rendszer lekéri a Parameter lekérdezés értékét. Az SourceVersion érték lekéréséhez DataRow használt verziót adja megDataAdapter.
Az alábbi táblázat a DataRowVersion használható enumerálási értékeket SourceVersionmutatja be.
| DataRowVersion enumerálá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 SqlClient következő szakaszban szereplő kód példa egy olyan paramétert határoz meg, UpdateCommand amelyben az CustomerID oszlopot két paraméterhez SourceColumn 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éppen a rendszer az CustomerIDSourceColumn a-val SourceVersionCurrent együtt használja a elemet. A @OldCustomerID paraméter az adatforrás aktuális sorának azonosítására szolgál. Mivel az egyező oszlop értéke a Original sor verziójában található, ugyanazt SourceColumn a (CustomerID) SourceVersionOriginal értéket használja a program.
SqlClient-paraméterek használata
Az alábbi példa bemutatja, hogyan hozhat létre és SqlDataAdapter állíthat be MissingSchemaActionAddWithKey további sémaadatokat az adatbázisból. A SelectCommandgyűjteményhez hozzáadott , InsertCommand, UpdateCommand, és DeleteCommand tulajdonságok, valamint azok SqlParameter megfelelő Parameters objektumai. 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;
}