Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: .NET Framework
.NET
.NET Standard
, 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;
}