Wie schreibe ich veränderte Daten in einer Datagridview wieder in die DB zurück ?

10/11/2009 - 20:41 von NicoN | Report spam
Hi NG,
in VS2008 habe ich ein Datagridview, welches Daten darstellt (Ach was ?). Im
DatenDesigner wurde automatisch die Kommadnos für Insert/Update/Select
angelegt. Unter dem TableAdapter wird aber nur "Fill,GetData()" angezeigt.
Stimmt da was nicht ?


Ok, im Programm kann ich jetzt Zeilen àndern und bekomme auch Events für
"CellEndEdit" und CellValueChanged.

Dennoch scheinen die Ädnerungen letztlich nicht in der DB anzukommen.
Habe ich noch was vergessen ?

Gruss Nico
 

Lesen sie die antworten

#1 Peter Götz
11/11/2009 - 08:28 | Warnen spam
Hallo Nico,

in VS2008 habe ich ein Datagridview, welches Daten darstellt (Ach was ?).
Im DatenDesigner wurde automatisch die Kommadnos für Insert/Update/Select
angelegt. Unter dem TableAdapter wird aber nur "Fill,GetData()" angezeigt.
Stimmt da was nicht ?



Vermutlich.
Man müsste aber Deinen konkreten Code kennen, um
sagen zu können ob und was daran nicht stimmt.

Du hast mit dem Designer irgendwas zusammengeklickt,
der dabei autom. generierte Code funktioniert nicht
erwartungsgemàss.und nun weisst Du nicht, wo in
diesem Code was verkehrt làuft?

Ok, im Programm kann ich jetzt Zeilen àndern und bekomme auch Events für
"CellEndEdit" und CellValueChanged.

Dennoch scheinen die Ädnerungen letztlich nicht
in der DB anzukommen. Habe ich noch was vergessen ?



Dafür gibt es verschiedene mögliche Ursachen.
Um diese herauszufinden, solltest Du mitteilen,
mit welcher Art von Datenbank Du arbeitest (z.B.
SQL-Server, Oracle, Access.mdb usw.).
Falls es eine Access.mdb ist, könnte es sein,
dass Du gar nicht mit der vorgesehenen *.mdb
arbeitest, sondern mit einer temporàren Kopie.

Falls *.mdb:
In welchem Pfad liegt die Datei?

Deine Fragestellung làsst vermuten, dass Dir einige
ganz elementare Grundlagen fehlen, die Du Dir
unbedingt erst mal erarbeiten solltest.

Der erste Schritt dazu wàre, dass Du Dich mit den
auf der Clientseite wichtigen Objekten DataTable,
DataView und CurrencyManager, sowie deren
Zusammenspiel vertraut machst.

Im nàchsten Schritt wàren dann DataSet und
Relation-Objekte von Interesse.

Bis hierher sind das alles Objekte, die noch überhaupt
keine Abhàngigkeit von irgendeiner Datenbank haben
und auch ohne irgendeine Datenbank im Hintergrund
ihre Arbeit verrichten können.
Die Arbeitsweise dieser Objekte solltest Du aber erst
mal verstanden haben.

Erst danach solltest Du Dir Connection- und Command-
Objekte, DataReader und DataAdapter vornehmen, die
zum eigentlichen Datenbankzugriff eingesetzt werden.

Unter

www.gssg.de -> Visual Basic -> VB.net

findest Du eine Reihe von Beispielen, welche mit
den oben erwàhnten Objekten arbeiten.

Unter

www.gssg.de -> Visual Basic -> VB.net
-> DataGridView
-> DataTable / DataView / CurrencyManager

findest Du Beispiele, die das Zusammenspiel zwischen
DataTable/DataView und CurrencyManager (zur Navigation
im Datenbestand) sowie die Bindung eines DataGridView
an eine DataTable via DataView demonstrieren.
Auch Beispiele mit DataSet und Relation-Objekten zur
Verknüpfung von Daten aus mehreren DataTables findest
Du dort.

Unter
www.gssg.de -> Visual Basic -> VB.net
-> Datenbank

gibt es dann Beispiele, welche auf eine Datenbank (*.mdb
und/oder SQL-Server zugreifen). In diesen Beispielen siehst
Du wie ConnectionObjekte erstellt werden, wie DataReader
und DataAdapter arbeiten und auch wie man direkt mit
Commands (OleDbCommand, SqlCommand usw.) direkt
auf Daten in einer Datenbank zugreifen kann.

Wenn Du diese Ablàufe kennst und verstanden hast, wirst
Du auch schnell erkennen dass sich hinter komplexeren
Objekten wie BindingSource und TableAdapter auch wieder
nur die oben erwàhnten grundlegenden Objekte verbergen.

Es klingt natürlich sehr verführerisch, wenn einem gesagt
wird, man könne mit irgendeinem Designer fertigen Code
erzeugen lassen, ohne dabei selbst etwas zu programmieren.
Dabei gibt es aber zwei ganz gravierende Schönheitsfehler:
Hàufig funktioniert der autom. generierte Code nicht wie
erwartet und man lernt so nicht oder nur sehr schwer, was die
in solchem Code verwendeten grundlegenden Objekte
eigentlich tun bzw. tun sollen.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen