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ı
SelectCommand nesnesinin Fill yöntemini çağırmadan önce DataAdapter özelliği ayarlanmalıdır.
InsertCommand öğesinin UpdateCommand yöntemi çağrılmadan önce, DeleteCommand içindeki verilerde hangi değişikliklerin yapıldığına bağlı olarak Update, DataAdapter veya DataTable özellikleri ayarlanmalıdır. Örneğin, satırlar eklendiyse, InsertCommand çağrısından önce Update 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, Command koleksiyonu aracılığıyla Parameters 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 SourceColumn nesnesinin SqlParameter ö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;
Add koleksiyonunun Parameters yöntemi, parametrenin adını, veri türünü, boyutunu (tür için geçerliyse) ve SourceColumn içindeki DataTable'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, DataColumn değerinin alınacağı DataRow içindeki Parameter adıdır.
SourceVersion, DataRow değeri almak için kullandığı DataAdapter sürümünü belirtir.
Aşağıdaki tablo, DataRowVersion ile kullanılabilen SourceVersion 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, SourceColumn değeri CustomerID olan aynı SourceVersion (Original) 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;
}