Problem bei Update (ADO.NET)

24/05/2008 - 19:22 von Karl M. | Report spam
Hallo NG!

Wenn ich bei meinem DataAdapter den Update(...)-Befehl ausführen möchte,
meldet er mir folgenden Fehler:

InvalidOperationException wurde nicht behandelt.
Dynamische SQL-Generierung für den UpdateCommand wird nicht für einen
SelectCommand unterstützt, der keine Schlüsselspalteninformationen
zurückgibt.

Ich habe dazu folgenden Code:

//Verbindung besteht bereits in der Variable Connection.
String SQL = "SELECT * FROM TestTabelle";
OleDbCommand Command = new OleDbCommand(SQL, Connection);
OleDbDataAdapter DataAdapter = new OleDbDataAdapter(Command);

DataTable Tabelle = new DataTable();
DataAdapter.FillSchema(Tabelle, SchemaType.Source);
DataAdapter.Fill(Tabelle);

//Es existieren bereits Zeilen in der Tabelle.
Tabelle.Rows[0]["MeinFeld"] = "Hallo";

OleDbCommandBuilder CommandBuilder = new OleDbCommandBuilder(DataAdapter);
//Beim folgenden Befehl ist der Absturz.
DataAdapter.Update(Tabelle);

Nun, bei der Stelle, an der ich Update(Tabelle) aufrufe, kommt obige
Meldung.
Wo ist der Fehler? Insert z.B. funktionieren trotzdem, aber Updates nicht.

Mit freundlichen Grüßen
 

Lesen sie die antworten

#1 Frank Dzaebel
24/05/2008 - 19:41 | Warnen spam
Hallo Karl,

Wenn ich bei meinem DataAdapter den Update(...)-Befehl ausführen möchte,
meldet er mir folgenden Fehler:
InvalidOperationException wurde nicht behandelt.
Dynamische SQL-Generierung für den UpdateCommand wird nicht für einen
SelectCommand unterstützt, der keine Schlüsselspalteninformationen
zurückgibt.



Für den CommandBuilder ist entscheidend, dass der Primàrschlüssel der
Tabelle für das Programm als solcher maschinell erkennbar ist. Welche DB
steckt dahinter? Ist überhaupt ein Primàrschlüssel in der Tabelle vorhanden?

Bei Excel-Provider etwa:

[Wenn Sie versuchen, ADO.NET OLEDbDataAdapter zu verwenden, um eine
Excel-Arbeitsmappe zu àndern, wird Fehlermeldung Ihnen angezeigt]
http://support.microsoft.com/kb/316756/de


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen