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
SQL Server SqlDataAdapter için Microsoft SqlClient veri sağlayıcısı, veri kaynağındaki verilerde yapılan değişikliklere yanıt vermek için kullanabileceğiniz üç olayı kullanıma sunar. Aşağıdaki tabloda DataAdapter olayları gösterilmektedir.
| Event | Description |
|---|---|
RowUpdating |
Bir satırdaki UPDATE, INSERT veya DELETE işlemi (yöntemlerden birine Update yapılan bir çağrıyla) başlamak üzeredir. |
RowUpdated |
Bir satırdaki UPDATE, INSERT veya DELETE işlemi (yöntemlerden birine Update yapılan bir çağrıyla) tamamlanır. |
FillError |
İşlem sırasında bir Fill hata oluştu. |
RowUpdating ve RowUpdated olayları
RowUpdating veri kaynağında bir satıra yapılan herhangi bir güncelleştirme işlenmeden DataSet önce oluşturulur.
RowUpdated, veri kaynağındaki DataSet satırına yapılan herhangi bir güncelleştirme işlendikten sonra oluşturulur. Sonuç olarak, güncelleştirme davranışını gerçekleşmeden önce değiştirmek, güncelleştirme gerçekleştiğinde ek işleme sağlamak, güncelleştirilmiş bir satıra başvuruyu korumak, geçerli güncelleştirmeyi iptal etmek ve daha sonra işlenecek bir toplu işlem için zamanlamak vb. için kullanabilirsiniz RowUpdating .
RowUpdated güncelleştirme sırasında oluşan hatalara ve özel durumlara yanıt vermek için kullanışlıdır.
Hata bilgilerini, DataSetile birlikte yeniden deneme mantığı ve benzeri özellikleri ekleyebilirsiniz.
RowUpdatingEventArgs ve RowUpdatedEventArgs olaylarına geçirilen RowUpdating ve RowUpdated bağımsız değişkenleri şunlardır: güncelleştirmeyi gerçekleştirmek için kullanılan nesneye başvuran bir CommandCommand özelliği, güncelleştirilmiş bilgileri içeren nesneye başvuran bir RowDataRow özelliği, yapılan güncelleştirmenin türünü belirten bir StatementType özelliği, varsa TableMapping, ve işlemin Status özelliği.
özelliğini kullanarak Status işlem sırasında bir hata oluşup oluşmadığını belirleyebilir ve isterseniz eylemleri geçerli ve sonuçta elde edilen satırlara karşı denetleyebilirsiniz. Olay gerçekleştiğinde Status özelliği Continue veya ErrorsOccurred değerine eşit olur. Aşağıdaki tabloda, güncelleştirme sırasında sonraki eylemleri denetlemek için özelliğini ayarlayabileceğiniz Status değerler gösterilmektedir.
| Statü | Description |
|---|---|
Continue |
Güncelleştirme işlemine devam edin. |
ErrorsOccurred |
Güncelleme işlemini durdurun ve bir istisna fırlatın. |
SkipCurrentRow |
Geçerli satırı yoksayın ve güncelleştirme işlemine devam edin. |
SkipAllRemainingRows |
Güncelleştirme işlemini durdurun, ancak özel durum oluşturmayın. |
Status özelliğini ErrorsOccurred olarak ayarlamak bir istisna oluşturmasına neden olur. İstediğiniz özel durumu belirleyerek Errors özelliğini ayarlayabilir ve hangi özel durumun fırlatılacağını denetleyebilirsiniz.
Status için diğer değerlerden birinin kullanılması, bir özel durumun oluşmasını önler.
Güncelleştirilmiş satırlara yönelik ContinueUpdateOnError hataları işlemek için özelliğini de kullanabilirsiniz. Eğer DataAdapter.ContinueUpdateOnErrortrue ise, bir satıra yapılan güncelleştirme bir özel durum oluşturduğunda, özel durumun metni, ilgili satırın bilgilerine RowError olarak yerleştirilir ve işleme herhangi bir özel durum fırlatılmadan devam edilir. Bu, hatayla karşılaşıldığında hatalara yanıt vermenizi sağlayan Update olayının aksine, RowUpdated tamamlandığında hatalara yanıt vermenizi sağlar.
Aşağıdaki kod örneği, olay işleyicilerinin nasıl ekleneceğini ve kaldırılacağını gösterir. Olay işleyicisi RowUpdating , silinen tüm kayıtların bir günlüğünü zaman damgasıyla yazar. Olay işleyicisi RowUpdated içindeki satırın RowErrorDataSetözelliğine hata bilgileri ekler, özel durumu gizler ve işlemeye devam eder (davranışını ContinueUpdateOnError = trueyansıtma).
static DataSet DataAdapterEventsDemo(SqlConnection connection, DataSet custDS)
{
// Assumes that connection is a valid SqlConnection object
// and custDS includes the Customers table.
SqlDataAdapter custAdapter = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers", connection);
// Add handlers.
custAdapter.RowUpdating += new SqlRowUpdatingEventHandler(OnRowUpdating);
custAdapter.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);
// Set DataAdapter command properties, fill DataSet, modify DataSet.
custAdapter.Update(custDS, "Customers");
// Remove handlers.
custAdapter.RowUpdating -= new SqlRowUpdatingEventHandler(OnRowUpdating);
custAdapter.RowUpdated -= new SqlRowUpdatedEventHandler(OnRowUpdated);
return custDS;
}
protected static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs args)
{
if (args.StatementType == StatementType.Delete)
{
// Saves the removing rows with additional information in a file.
System.IO.TextWriter tw = System.IO.File.AppendText("Deletes.log");
tw.WriteLine(
"{0}: Customer {1} Deleted.", DateTime.Now,
args.Row["CustomerID", DataRowVersion.Original]);
tw.Close();
}
}
protected static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
{
if (args.Status == UpdateStatus.ErrorsOccurred)
{
// Adds the error message to the row and skips from it.
args.Row.RowError = args.Errors.Message;
args.Status = UpdateStatus.SkipCurrentRow;
}
}
FillError olayı
Bir DataAdapter işlemi sırasında hata oluştuğunda FillErrorFill olayını tetikler. Bu tür bir hata genellikle, eklenen satırdaki veriler duyarlık kaybı olmadan .NET türüne dönüştürülemediğinde oluşur.
İşlem sırasında bir hata oluşursa, geçerli satır Fill öğesine DataTable eklenmez. Olay, FillError hatayı düzeltmenize ve satırı eklemenize veya dışlanan satırı yoksayıp işleme devam Fill etmenizi sağlar.
Etkinliğe FillErrorEventArgs iletilen FillError, hataları yanıtlamanıza ve çözmenize olanak tanıyan çeşitli özellikler içerebilir. Aşağıdaki tabloda nesnenin özellikleri gösterilmektedir FillErrorEventArgs .
| Mülkiyet | Description |
|---|---|
Errors |
Oluşan Exception. |
DataTable |
Hatanın meydana geldiği zaman doldurulmakta olan DataTable nesnesi. |
Values |
Hata oluştuğunda eklenen satırın değerlerini içeren bir nesne dizisi. Dizideki Values sıralı başvurular, eklenen satırın sütunlarının sıralı başvurularına karşılık gelir. Örneğin, Values[0] satırın ilk sütunu olarak eklenen değerdir. |
Continue |
Özel durum oluşturup oluşturmayabileceğinizi seçmenize olanak tanır. özelliğinin Continue olarak false ayarlanması geçerli Fill işlemi durdurur ve bir özel durum oluşturulur.
Continue öğesini true olarak ayarlamak, hataya rağmen Fill işlemini sürdürür. |
Aşağıdaki kod örneği, FillError olayının DataAdapter olay işleyicisini ekler. Olay kodunda FillError örnek, özel duruma yanıt verme fırsatı sağlayarak duyarlık kaybı olasılığı olup olmadığını belirler.
static DataSet DataAdapterFillAndError(SqlDataAdapter adapter)
{
// Assuemes adapter is a valid SqlDataAdapter object.
adapter.FillError += new FillErrorEventHandler(FillError);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
return dataSet;
}
protected static void FillError(object sender, FillErrorEventArgs args)
{
if (args.Errors.GetType() == typeof(System.OverflowException))
{
// Code to handle precision loss.
// Add a row to table using the values from the first two columns.
DataRow myRow = args.DataTable.Rows.Add(new object[]
{args.Values[0], args.Values[1], DBNull.Value});
//Set the RowError containing the value for the third column.
myRow.RowError =
"OverflowException Encountered. Value from data source: " +
args.Values[2];
args.Continue = true;
}
}
Ayrıca bakınız
- Veri Adaptörleri (DataAdapters) ve Veri Okuyucular (DataReaders)
- Events
- SQL Server için Microsoft ADO.NET