33.5 Das Ereignis »FillError« des SqlDataAdapters
Sollte beim Füllen des DataSets oder der DataTable ein Fehler auftreten, löst der SqlDataAdapter das Ereignis FillError aus. Sie können das Ereignis dazu benutzen, um zum Beispiel die Ereignisursache zu protokollieren. Per Vorgabe wird nach Beendigung des Ereignisses eine Exception ausgelöst. Sie können die Ausnahme im Code behandeln, was allerdings nicht sinnvoll ist, weil dazu eigentlich schon der Ereignishandler dient. Sie haben aber auch die Möglichkeit, im Ereignishandler die Fortsetzung des Programms ohne Ausnahme zu erzwingen. Dazu übergeben Sie der Eigenschaft Continue des zweiten Parameters des Ereignishandlers mit true die entsprechende Anweisung.
Im folgenden Programmbeispiel wird ein Fehler beim Füllen des DataSets ausgelöst, indem die Eigenschaft MissingMappingAction des SqlDataAdapters auf Error gesetzt wird. Im Ereignishandler wird die Folgeausnahme mit e.Continue=true unterdrückt.
// Beispiel: ..\Kapitel 33\FillErrorSample
static void Main(string[] args) {
SqlConnection con = new SqlConnection();
con.ConnectionString = "...";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Products";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
da.FillError += new FillErrorEventHandler(da_FillError);
da.SelectCommand = cmd;
da.MissingMappingAction = MissingMappingAction.Error;
da.Fill(ds, "Artikel"); // InvalidOperationException
Console.ReadLine();
}
static void da_FillError(object sender, FillErrorEventArgs e) {
Console.WriteLine(e.Errors.Message);
e.Continue = true;
}
Listing 33.11 Das Ereignis »FillError« behandeln
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.