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.
, 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. ö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
Not
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. ve System.Data.OleDb parametreleri için System.Data.Odbc soru işareti (?) yer tutucularını kullanın.
Bu Visual Basic örneğinde CompanyName alan, parametrenin değerine @CompanyName eşit olan CustomerID satırın parametresinin @CustomerID değeriyle güncelleştirilir. 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.
adapter.Parameters.Add( _
"@CompanyName", SqlDbType.NChar, 15, "CompanyName")
Dim parameter As SqlParameter = _
adapter.UpdateCommand.Parameters.Add("@CustomerID", _
SqlDbType.NChar, 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.
Not
hem Fill işlemlerinin DataAdapter hem de Get yöntemlerinin DataReader.NET Framework türü, .NET Framework veri sağlayıcısından döndürülen türden çıkarılır. Microsoft SQL Server, OLE DB ve ODBC veri türleri için çıkarsanan .NET Framework türleri ve erişimci yöntemleri ADO.NET'deki Veri Türü Eşlemeleri'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ı | Açıklama |
|---|---|
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 DataRow içindeki geç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)
{
SqlDataAdapter adapter = new()
{
MissingSchemaAction = MissingSchemaAction.AddWithKey,
// Create the commands.
SelectCommand = new SqlCommand(
"SELECT CustomerID, CompanyName FROM CUSTOMERS", connection),
InsertCommand = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", connection),
UpdateCommand = new SqlCommand(
"UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", connection),
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;
}
Public Function CreateSqlDataAdapter( _
ByVal connection As SqlConnection) As SqlDataAdapter
Dim adapter As 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
End Function
OleDb Parametre Yer Tutucuları
OleDbDataAdapter ve OdbcDataAdapter nesneleri için, parametreleri tanımlamak için soru işareti (?) yer tutucularını kullanmanız gerekir.
Dim selectSQL As String = _
"SELECT CustomerID, CompanyName FROM Customers " & _
"WHERE CountryRegion = ? AND City = ?"
Dim insertSQL AS String = _
"INSERT INTO Customers (CustomerID, CompanyName) VALUES (?, ?)"
Dim updateSQL AS String = _
"UPDATE Customers SET CustomerID = ?, CompanyName = ? " & _
WHERE CustomerID = ?"
Dim deleteSQL As String = "DELETE FROM Customers WHERE CustomerID = ?"
string selectSQL =
"SELECT CustomerID, CompanyName FROM Customers " +
"WHERE CountryRegion = ? AND City = ?";
string insertSQL =
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (?, ?)";
string updateSQL =
"UPDATE Customers SET CustomerID = ?, CompanyName = ? " +
"WHERE CustomerID = ? ";
string deleteSQL = "DELETE FROM Customers WHERE CustomerID = ?";
Parametreli sorgu deyimleri, hangi giriş ve çıkış parametrelerinin oluşturulması gerektiğini tanımlar. Parametre oluşturmak için yöntemini veya oluşturucuyu Parameters.Add kullanarak Parameter sütun adını, veri türünü ve boyutunu belirtin. gibi Integeriç veri türleri için boyutu eklemeniz gerekmez veya varsayılan boyutu belirtebilirsiniz.
Aşağıdaki kod örneği, bir SQL deyiminin parametrelerini oluşturur ve sonra bir DataSetdoldurur.
OleDb Örneği
' Assumes that connection is a valid OleDbConnection object.
Dim adapter As OleDbDataAdapter = New OleDbDataAdapter
Dim selectCMD AS OleDbCommand = New OleDbCommand(selectSQL, connection)
adapter.SelectCommand = selectCMD
' Add parameters and set values.
selectCMD.Parameters.Add( _
"@CountryRegion", OleDbType.VarChar, 15).Value = "UK"
selectCMD.Parameters.Add( _
"@City", OleDbType.VarChar, 15).Value = "London"
Dim customers As DataSet = New DataSet
adapter.Fill(customers, "Customers")
// Assumes that connection is a valid OleDbConnection object.
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand selectCMD = new OleDbCommand(selectSQL, connection);
adapter.SelectCommand = selectCMD;
// Add parameters and set values.
selectCMD.Parameters.Add(
"@CountryRegion", OleDbType.VarChar, 15).Value = "UK";
selectCMD.Parameters.Add(
"@City", OleDbType.VarChar, 15).Value = "London";
DataSet customers = new DataSet();
adapter.Fill(customers, "Customers");
Odbc Parametreleri
' Assumes that connection is a valid OdbcConnection object.
Dim adapter As OdbcDataAdapter = New OdbcDataAdapter
Dim selectCMD AS OdbcCommand = New OdbcCommand(selectSQL, connection)
adapter.SelectCommand = selectCMD
' Add Parameters and set values.
selectCMD.Parameters.Add("@CountryRegion", OdbcType.VarChar, 15).Value = "UK"
selectCMD.Parameters.Add("@City", OdbcType.VarChar, 15).Value = "London"
Dim customers As DataSet = New DataSet
adapter.Fill(customers, "Customers")
// Assumes that connection is a valid OdbcConnection object.
OdbcDataAdapter adapter = new OdbcDataAdapter();
OdbcCommand selectCMD = new OdbcCommand(selectSQL, connection);
adapter.SelectCommand = selectCMD;
//Add Parameters and set values.
selectCMD.Parameters.Add("@CountryRegion", OdbcType.VarChar, 15).Value = "UK";
selectCMD.Parameters.Add("@City", OdbcType.VarChar, 15).Value = "London";
DataSet customers = new DataSet();
adapter.Fill(customers, "Customers");
Not
Bir parametre için parametre adı sağlanmazsa, parametreye "Parametre1" ile başlayarak N Parametresininartımlı varsayılan adı verilir. Bir parametre adı sağladığınızda ParametreN adlandırma kuralından kaçınmanızı öneririz, çünkü sağladığınız ad içinde ParameterCollectionmevcut bir varsayılan parametre adıyla çakışabilir. Sağlanan ad zaten varsa, bir özel durum oluşturulur.