Sie benutzen auch die Microsoft Access Nordwind-Datenbank, um ihren .NET-Code zu testen? Dann wird Ihnen folgender Fehler vielleicht bekannt vorkommen:
Bei dem Versuch, eine Tabelle der Nordwind-Datenbank mit der Update-Methode eines DataAdapters zu aktualisieren, erhalten Sie immer wieder die Fehlermeldung
“Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.”
Bei der Erstellung des DataAdapters für die Kunden-Tabelle haben Sie beispielsweise geschrieben:
OleDbDataAdapter da = new OleDbDataAdapter(“SELECT * FROM Kunden”, con);
Beim Speichern erhalten Sie dann aber besagte Fehlermeldung. Was geht hier vor?
Viele Tabellen der Nordwind-Datenbank enthalten Feldnamen in denen Sonderzeichen vorkommen, wie z.B. in der Kundentabelle das Feld “Kunden-Code”. Der OleDbProvider von .NET schreibt solche Felder im Hintergrund mit eckigen Klammern als “[Kunden-Code]” in seine SQL-Statements, wie man es in Microsoft Access und Microsoft SQL-Server ja auch gewohnt ist.
Dumm ist nur, dass der CommandBuilder in ADO.NET diese Klammern nicht versteht und einfach als alphanumerisches Zeichen wertet, so dass er bei “[Kunden-Code]” immer noch über das Sonderzeichen (-) stolpert. Was ist nun die Lösung des Problems?
Teilen Sie dem CommandBuilder nach dessen Erzeugung einfach mit, dass die Klammern “[" und "]” nicht als normale Zeichen, sondern als Feldbegrenzungszeichen gewertet werden sollen. Das sieht dann wie folgt aus:
OleDbDataAdapter da = new OleDbDataAdapter(“SELECT * FROM Kunden”, con);
OleDbCommandBuilder cmb = new OleDbCommandBuilder(da);
cmb.QuotePrefix = “[";
cmb.QuoteSuffix = "]“;
da.Update(this.AppDataSet.Kunden);
Und schon steht einer Aktualisierung der Daten nichts mehr im Wege.
So einfach kann es sein!