OleDBDataAdapter.Update() wird nicht ausgeführt

17/01/2009 - 16:21 von Florian | Report spam
Hi an alle,

ich bin auf folgendes Problem gestoßen für das ich trotz langer Suche im
Internet keinen Hinweis gefunden habe.

Also ich habe eine ganz simple direkte Verbindung zu einer Access 2003
(.mdb) Datenbank aufgebaut, mittels des OleDB.

dataSet = new DataSet();
mdbFile = @"Data\Datenbank\Lagerverwaltung.mdb";
connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source={0}", mdbFile);

conn = new OleDbConnection(connString);
adapter = new OleDbDataAdapter();

adapter.SelectCommand = new OleDbCommand("SELECT * FROM
Artikel;", conn);
OleDbCommandBuilder Test = new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet, "Artikel")

Dieser Part funktioniert auch einwandfrei. Ich manipuliere anschließend die
Daten über eine DataGridControl von Xceed für WPF. Dies funktioniert
ebenfalls wunderbar. Dies habe ich überprüft, indem ich bevor ich
OleDBDataAdapter.Update() mache mit einfach eine MessageBox ausgegeben habe,
in der ich den ersten Datensatz asugegeben habe, und diesen vorher
absichtlich manipuliert habe. Die Ausgabe passte und war in Ordnung.

Nun kommen wir zu meinem Problem. Ich habe nun am Ende des Programms
adapter.Update() aufgerufen:


adapter.Update(dataSet, "Artikel")


Es gibt bei diesem Befehl auch keine Fehler, exception, Error oder what
ever. Jedoch wenn ich das Programm dann wieder neu starte ist die Datenbank
unveràndert.

Als Randinformation ich verwende VS2008 auf Vista SP1 mit Xceed Datagrid
Control. Als Datenbank verwende ich ein .mdb (Access 2003) File und Access
ist 2007. Die Datenbank wurde auch mit Access 2007 erstellt. Ebenso ist die
Datenbank in VS2008 nicht eingebunden sondern lediglich als vorhandenes
Objekt hinzugefügt worden und wie oben erwàhnt greife ich direkt darauf zu.

Sofern jemand Lösungsvorschlàge hat, mir Links auf àhnliche Themen oder
sonstiges geben könnte wàre ich sehr erfreut und dankbar.

mfg

Florian HEIDER
 

Lesen sie die antworten

#1 Elmar Boye
17/01/2009 - 20:22 | Warnen spam
Hallo Florian,

"Florian" schrieb ...
Also ich habe eine ganz simple direkte Verbindung zu einer Access 2003
(.mdb) Datenbank aufgebaut, mittels des OleDB.

dataSet = new DataSet();
mdbFile = @"Data\Datenbank\Lagerverwaltung.mdb";
connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source={0}", mdbFile);

conn = new OleDbConnection(connString);
adapter = new OleDbDataAdapter();

adapter.SelectCommand = new OleDbCommand("SELECT * FROM
Artikel;", conn);
OleDbCommandBuilder Test = new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet, "Artikel");



Ich gehe davon aus, Deine Tabelle hat einen Primàrschlüssel,
denn ansonsten kann der CommandBuilder keine Befehle
generieren.

Nun kommen wir zu meinem Problem. Ich habe nun am Ende des Programms
adapter.Update() aufgerufen:

adapter.Update(dataSet, "Artikel");

Es gibt bei diesem Befehl auch keine Fehler, exception, Error oder what
ever. Jedoch wenn ich das Programm dann wieder neu starte ist die Datenbank
unveràndert.



Hast Du mal überprüft, ob die letzten Änderungen im DataSet
angekommen sind? Ein
dataSet.Tables["Artikel"].GetChanges().Rows.Count;
müsste Dir mindestens eine verànderte Zeile liefern.

Gruß Elmar

Ähnliche fragen