Aracılığıyla paylaş


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ı

özelliğinin SelectCommand yöntemini Fillçağırmadan DataAdapter önce ayarlanması gerekir. InsertCommandyöntemi çağrılmadan önce UpdateCommandDeleteCommand içindeki Updateverilerde DataAdapteryapılan değişikliklere bağlı olarak , veya DataTable özellikleri ayarlanmalıdır. Örneğin, satırlar eklendiyse, InsertCommand çağrısı Updateyapılmadan önce öğesinin ayarlanması gerekir. 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ır hakkındaki geçerli bilgiler koleksiyon aracılığıyla Command nesneye Parameters geçirilir.

Veri kaynağında bir satırı güncelleştirdiğinizde, güncelleştirilecek tablodaki satırı tanımlamak için benzersiz bir tanımlayıcı kullanan UPDATE deyimini çağırırsınız. Benzersiz tanımlayıcı genellikle birincil anahtar alanının değeridir. UPDATE deyimi, 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, CustomerID parametresi @CustomerID değerine eşit olan satırda, CompanyName alanı @CompanyName parametresinin değeriyle güncellenir. Parametreler, nesnesinin özelliğini SourceColumn kullanarak SqlParameter değiştirilen satırdan bilgi 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;

Add Koleksiyonun Parameters yöntemi parametresinin adını, veri türünü, boyutunu (türü için varsa) ve öğesinden SourceColumnöğesinin DataTable adını alır. SourceVersion parametresinin @CustomerID olarak ayarlandığına Originaldikkat edin. Bu, değiştirilen içinde tanımlayıcı sütun veya sütunların değeri değiştirildiğinde veri kaynağındaki mevcut satırın güncelleştirildiğini garanti eder DataRow. 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 Get yöntemleri açısından, DataReader 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 oluşturucuya Parameter bağımsız değişken olarak geçirilebilir veya mevcut Parameterbir öğesinin özellikleri olarak ayarlanabilir. SourceColumn değerinin DataColumnDataRow alınacağı konumdan öğesinin Parameter adıdır. değeri SourceVersion almak için kullanılan sürümü DataRow belirtirDataAdapter.

Aşağıdaki tabloda ile DataRowVersionkullanılabilen numaralandırma değerleri gösterilmektedirSourceVersion.

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

SqlClient Sonraki bölümdeki kod örneği, sütunun UpdateCommand iki parametre için kullanıldığı CustomerID bir SourceColumn parametresini tanımlar: @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 sürümünde bulunduğundan Original , ile aynı SourceColumn (CustomerID) SourceVersionOriginal kullanılır.

SqlClient parametreleriyle çalışma

Aşağıdaki örnekte, veritabanından ek şema bilgilerini almak için öğesinin SqlDataAdapter nasıl oluşturulacağı ve olarak nasıl ayarlanacağı MissingSchemaActionAddWithKey gösterilmektedir. SelectCommand, InsertCommand, UpdateCommandve DeleteCommand özellikleri kümesi ve koleksiyona SqlParameter eklenen ilgili Parameters nesneleri. 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