DataAdapter parametreleri

Şunlar için geçerlidir: .NET Framework .NET .NET Standard

ADO.NET indirin

, DbDataAdapter veri kaynağından veri almak ve verileri veri kaynağına güncelleştirmek için kullanılan dört özelliğe sahiptir: SelectCommand özelliği veri kaynağından veri döndürür; ve InsertCommand veri kaynağındaki değişiklikleri yönetmek için , UpdateCommandve DeleteCommand özellikleri kullanılır.

Uyarı

DataAdapter nesnesinin Fill yöntemini çağırmadan önce SelectCommand özelliği ayarlanmalıdır. DataAdapter öğesinin Update yöntemi çağrılmadan önce, DataTable içindeki verilerde hangi değişikliklerin yapıldığına bağlı olarak InsertCommand, UpdateCommand veya DeleteCommand özellikleri ayarlanmalıdır. Örneğin, satırlar eklendiyse, Update çağrısından önce InsertCommand ayarlanmalıdır. Eklenen, güncelleştirilen veya silinen bir satırı işlerken Update , DataAdapter eylemi işlemek için ilgili Command özelliği kullanır. Değiştirilen satıra ilişkin güncel bilgiler, Parameters koleksiyonu aracılığıyla Command nesnesine iletilir.

Veri kaynağında bir satırı güncelleştirdiğinizde, güncelleştirilecek tablodaki UPDATE satırı tanımlamak için benzersiz bir tanımlayıcı kullanan deyimini çağırırsınız. Benzersiz tanımlayıcı genellikle birincil anahtar alanının değeridir. deyimi, UPDATE aşağıdaki Transact-SQL deyiminde gösterildiği gibi hem benzersiz tanımlayıcıyı hem de güncelleştirilecek sütunları ve değerleri içeren parametreleri kullanır.

UPDATE Customers SET CompanyName = @CompanyName
  WHERE CustomerID = @CustomerID  

Uyarı

Parametre yer tutucularının söz dizimi veri kaynağına bağlıdır. Bu örnekte SQL Server veri kaynağı için yer tutucular gösterilmektedir.

Bu örnekte, CompanyName parametresi @CompanyName değerine eşit olan satırda, CustomerID alanı @CustomerID parametresinin değeriyle güncellenir. Parametreler, değiştirilen satırdan SqlParameter nesnesinin SourceColumn özelliğini kullanarak bilgileri alır. Önceki örnek UPDATE deyiminin parametreleri aşağıda verilmiştir. Kod, değişkeninin adapter geçerli SqlDataAdapter bir nesneyi temsil ettiğini varsayar.

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

Parameters koleksiyonunun Add yöntemi, parametrenin adını, veri türünü, boyutunu (tür için geçerliyse) ve DataTable içindeki SourceColumn'nin adını alır. SourceVersion parametresinin @CustomerID olarak ayarlandığına Originaldikkat edin. Bu, değiştirilen DataRow içinde tanımlayıcı sütun ya da sütunların değeri değiştirilmişse, veri kaynağındaki mevcut satırın güncellenmesini sağlar. Bu durumda, Original satır değeri veri kaynağındaki geçerli değerle eşleşir ve Current satır değeri güncelleştirilmiş değeri içerir. SourceVersion @CompanyName parametresi ayarlanmadı ve varsayılan Current satır değerini kullanır.

Uyarı

Fill işlemleri ve DataAdapter yöntemleri açısından, Get için SQL Server'a ait Microsoft SqlClient Veri Sağlayıcısı'ndan döndürülen türe göre .NET türü çıkarılır. Microsoft SQL Server veri türleri için çıkarılmış .NET türleri ve erişimci yöntemleri , ADO.NET Veri Türü Eşlemeleri bölümünde açıklanmıştır.

Parameter.SourceColumn, Parameter.SourceVersion

SourceColumn ve SourceVersion, Parameter oluşturucusuna argüman olarak geçirilebilir veya mevcut bir Parameter nesnesinin özellikleri olarak ayarlanabilir. SourceColumn, Parameter değerinin alınacağı DataRow içindeki DataColumn adıdır. SourceVersion, DataAdapter değeri almak için kullandığı DataRow sürümünü belirtir.

Aşağıdaki tablo, SourceVersion ile kullanılabilen DataRowVersion numaralandırma değerlerini gösterir.

DataRowVersion Numaralandırma Türü Description
Current parametresi sütunun geçerli değerini kullanır. Bu varsayılan seçenektir.
Default Parametre, sütunun DefaultValue öğesini kullanır.
Original parametresi sütunun özgün değerini kullanır.
Proposed parametresi önerilen bir değer kullanır.

Sonraki bölümdeki SqlClient kod örneği, bir UpdateCommand için bir parametre tanımlar; burada CustomerID sütunu iki parametre için SourceColumn olarak kullanılır: @CustomerID (SET CustomerID = @CustomerID) ve @OldCustomerID (WHERE CustomerID = @OldCustomerID). @CustomerID parametresi CustomerID sütununu içindeki DataRowgeçerli değere güncelleştirmek için kullanılır. Sonuç olarak, CustomerIDSourceColumn ile SourceVersionCurrent kullanılır. @OldCustomerID parametresi, veri kaynağındaki geçerli satırı tanımlamak için kullanılır. Eşleşen sütun değeri satırın Original sürümünde bulunduğundan, SourceVersion değeri Original olan aynı SourceColumn (CustomerID) kullanılır.

SqlClient parametreleriyle çalışma

Aşağıdaki örnek, veritabanından ek şema bilgilerini almak için bir SqlDataAdapter öğesinin nasıl oluşturulacağını ve MissingSchemaAction değerinin AddWithKey olarak nasıl ayarlanacağını gösterir. SelectCommand, InsertCommand, UpdateCommand ve DeleteCommand özellikleri ayarlanır ve bunlara karşılık gelen SqlParameter nesneleri Parameters koleksiyonuna eklenir. yöntemi bir SqlDataAdapter nesne döndürür.

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

Ayrıca bakınız