Megosztás:


DataAdapter-paraméterek

A következőre vonatkozik: .NET Framework .NET .NET Standard

ADO.NET letöltése

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;
}

Lásd még