Zum Inhalt springen

Ado.Net Tabelle updaten


daTom

Empfohlene Beiträge

Hallo,

ich muss euch mal wieder um Hilfe bitten, da ich absolut nicht weiß wie ich das angehen soll.

Ich habe ein Grid auf einer aspx-Seite, in dem ich es erlaube in einer bestimmten Spalte mit Hilfe einer Checkbox ein Flag auf "erledigt" oder "nicht erledigt" zu setzen. Zudem muss der Benutzer in einer TextBox ein Kürzel eintragen, mit der er die Veränderung des Datensatzes bestätigt.

Nun möchte ich halt, dass die veränderten Datensätze auch in der Datenbank gespeichert werden. Nur leider scheitert es hier an meinen bislang mangelden Ado.NET - Kenntnissen.

Zuerst mal das Statement:


public static string sql = UPDATE positions SET done = :Done, worker = :Worker WHERE ID = :ID

Bei der Datenbank handelt es sich im Übrigen um eine Oracle-Datenbank. Nun der entscheidene Auszug aus meiner Datenschicht:

            using (OracleConnection connection = this.OpenConnection()) {

                OracleCommand cmd = new OracleCommand(sql, connectionString);

                cmd.Add(new OracleParameter(":Worker", OracleType.VarChar));

                cmd.Add(new OracleParameter(":Done", OracleType.Boolean));

                cmd.Add(new OracleParameter(":ID", OracleType.Int32, 20, "id"));

                cmd.Parameters[":ID"].SourceVersion = DataRowVersion.Original;

                cmd.Parameters[":Bearbeiter"].Value = //Text aus der Textbox

                cmd.Parameters[":Done"].Value = Wert aus dem Grid

                OracleDataAdapter adapter = new OracleDataAdapter();

                adapter.UpdateCommand = cmd;

                int affectedRows = adapter.Update(dataRows);

                return affectedRows;

            }

Leider funktioniert das ganze nicht wirklich. Eine Exception erhalte ich nicht, aber die Update Methode liefert immer 0 zurück. Das dataRows ist ein Array von DataRows die ich mit der Methode

ds.Tables["ToDoData"].Select(null, null, DataViewRowState.ModifiedCurrent)

erhalte. In dem Array stecken dann auch tatsächlich alle veränderten Zeilen als DataRows.

Hat jemand einen Tip für mich? So langsam verzweifel ich daran.

Aus der MSDN Dokumentation werde ich leider nicht schlau.

Gruß

daTom

Bearbeitet von daTom
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Amstelchen,

da ist mir beim kopieren wohl ein Fehler unterlaufen. Sie sind natürlich in Anführungszeichen gesetzt.

Ich bekomme ja auch keinen Compiler-Fehler. Der wäre ja auch ziemlich eindeutig :)

Ne, mein Problem ist, dass die Tabelle halt nicht upgedatet wird.

Gruß

daTom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Tom,

wie so oft hier bei ADO.NET Themen: Falscher Ansatz! Du kannst es so lösen wie du es angegangen bist, machst dir damit aber viel zu viel Arbeit.

Du hast deine Daten ja in einer DataTable und diese vermutlich auch mit einem DataAdapter oder einem TableAdapter aus der DB geladen. Der Adapter kann die nötigen CRUD Statement selbstständig generieren, das macht er über den SQL Command Builder. Du benötigst die Instanz des Adapters der die Daten geladen hat und machst dann ein adpater.Update( dataTable );, das führt dazu das für jede DataRow in der Table das passende SQL Statement generiert und gegen die Datenbank ausgeführt wird.

Erst wenn dir das SQL Statement aus irgendeinem Grund nicht gefällt musst du selbst SQL-Statement schreiben - aber die dann bitte auch in das entsprechende Command Objekt des Adapters.

Als Lesewerk kann ich von MS Press die ADO.NET 2.0 Core Reference empfehlen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...