Laden...

Grundsätzliche Frage zu OleDbDataAdapter

Erstellt von Yeats vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.960 Views
Y
Yeats Themenstarter:in
102 Beiträge seit 2005
vor 17 Jahren
Grundsätzliche Frage zu OleDbDataAdapter

Guten Tag!

Ich hätte, selbst auf die Gefahr hin mich jetzt lächerlich zu machen, eine Grundsätzliche Frage zum DataAdapter.
Und zwar, wo wird der select- Befehl ausgeführt, der dem Adapter übergeben wird?

z.B.:

string select="select * from Tab_Name;";
System.Data.OleDb.OleDbDataAdapter adapt=new System.Data.OleDb.OleDbDataAdapter(select, connection);

Wird der Sql- Befehl and die DB geschickt, dort verarbeitet und das Resultat zurückgeschickt? Oder wird die Tabelle an den Adapter geschickt, zwischengespeichert, und Anweisung vom Adapter ausgeführt?

Mfg

3.728 Beiträge seit 2005
vor 17 Jahren
Adapter-Frage

Ein DataAdapter hält ein SelectCommand, InsertCommand, UpdateCommand und ein DeleteCommand. Das SelectCommand wird ausgeführt, wenn Du die Fill-Methode aufrufst. Durch aufruf von Fill wird eine DataTable mit dem Abfrageergebnis des SelectCommands befüllt.

Der überladene Konstruktor, den Du verwendest, macht nichts anderes, als das SelectCommand festzulegen. In dem Moment passiert aber noch kein DB-Zugriff.

An einen DataAdapter werden keine Tabellen geschickt. Ein DataAdapter füllt ein lokales DataTable-Objekt im Hauptspeicher mit Abfrageergebnissen (Fill). Außerdem kann ein DataAdapter Änderungen an einem lokalen DataTable-Objekt auf die Datenbank übertragen (Update). Dazu analysiert er die RowState-Eigenschaft jeder Zeile der bei der Update-Methode übergebenen DataTable. Entsprechend des RowStates wird entwerder das UpdateCommand, das InsertCommand oder das DeleteCommand für die Zeile ausgeführt (Was letztendlich zur aktualisierung der Datenbank führt).

Y
Yeats Themenstarter:in
102 Beiträge seit 2005
vor 17 Jahren

Danke für die prompte Antwort. Mir ist auch klar das man die Funktion Fill braucht um ein DataSet oder DataTable zu füllen. Aus deiner Antwort wird für mich aber nicht ersichtlich ob das Sql- Statement nun von der Datenbank(z.B.: Access) ausgeführt wird oder ob der Adapter die gesamte Tabelle lädt und dann die Select- Anweisung ausführt. Denn als Select- Anweisung könnte ja auch
"Select * from tab_Name where Datum like '13.11.*';"
stehen.

T
512 Beiträge seit 2006
vor 17 Jahren

Das Select wird von der Datenbank ausgeführt.

Merkt man z.B. daran, dass man unterschiedliche Funktionen benutzen kann/muss wenn man an unterschiedliche Datenbanken geht. Z.B. heißt es in Oracle SUBSTR und in MSSQL Substring.

Bei Access ist es was anderes. Da gibt es ja nur die Datei, in der die Datenbank gespeichert ist. Da läuft ja nirgendswo ein Programm für die Datenbank, wie bei MSSQL oder Oracle. Dort muss wirklich der Treiber selbst rausfiltern was gebraucht wird.

Der Adapter macht es dann trotzdem nicht, er verlässt sich darauf, dass der OleDb Treiber für die Datenbank ihm die richtigen Ergebnisse liefert.

e.f.q.

Aus Falschem folgt Beliebiges

Y
Yeats Themenstarter:in
102 Beiträge seit 2005
vor 17 Jahren

Danke. Noch einen schönen Tag!