Sie können auf diese Weise eine direkte Aktualisierungsanweisung an die Oracle Engine senden.
using (OracleConnection cnn = new OracleConnection(connString))
using (OracleCommand cmd = new OracleCommand("UPDATE TABLE1 SET BIRHDATE=:NewDate WHERE ID=:ID", cnn))
{
cmd.Parameters.AddWithValue(":NewDate", YourDateTimeValue);
cmd.Parameters.AddWithValue(":ID", 111);
cnn.Open();
cmd.ExecuteNonQuery();
}
EDIT: (eine Datentabelle, Datensatz)
Wenn Sie nicht wissen, welche Felder geändert (und wollen kein ORM-Tool verwenden), dann müssen Sie die ursprüngliche Datasource halten verwendet, um zunächst Ihre Felder zu füllen. Aktualisieren Sie dann die zugehörige Zeile und verwenden Sie einen OracleDataAdapter.
using(OracleConnection cnn = new OracleConnection(connString))
using (OracleCommand cmd = new OracleCommand("SELECT * FROM TABLE1 WHERE 1=0", cnn))
{
OracleAdapter adp = new OracleDataAdapter();
adp.SelectCommand = cmd;
// The OracleDataAdapter will build the required string for the update command
// and will act on the rows inside the datatable who have the
// RowState = RowState.Changed Or Inserted Or Deleted
adp.Update(yourDataTable);
}
Denken Sie daran, dass dieser Ansatz ineffizient ist, da zwei Fahrten zur Datenbank erforderlich sind. Der erste, um Ihre Tabellenstruktur zu entdecken, der zweite, um die geänderten Zeilen zu aktualisieren. Darüber hinaus benötigt der OracleDataAdapter zur Vorbereitung des UpdateCommand/InsertCommand/DeleteCommand einen Primärschlüssel in der Tabelle.
Im Gegensatz dazu ist dies praktisch, wenn Sie viele Zeilen aktualisieren müssen.
Die letzte Alternative (und wahrscheinlich die schnellste) ist ein StoredProcedure, aber in diesem Fall müssen Sie zu meinem ersten Beispiel zurückkehren und den OracleCommand so anpassen, dass er StoredProcedure verwendet (Alle Felder als Parameter hinzufügen, CommandType zu CommandType ändern) .StoredProcedure und ändern Sie den Text des Befehls als den Namen des StoredProcedure). Dann wählt der StoredProcedure, welche Felder aktualisiert werden müssen.
verwenden Sie Entity Framework? – sarwar026
Nein Ich verwende ODP.NET (Oracle.Access.Dll) –