Come eseguire una dichiarazione di aggiornamento utilizzando Oracle ODP.Net in C #

Sto usando Oracle.DataAccess.Client per lavorare con il database Oracle nella mia applicazione ASP.Net . Non c’è documentazione di supporto in MSDN per ODP.Net e la documentazione di Oracle è davvero pessima. Non riesco a trovare la risposta a questa semplice domanda.

Non è ansible eseguire una semplice istruzione di aggiornamento senza dover build un object dataset e aggiornare il dataset ?

Come eseguire una dichiarazione di aggiornamento usando Oracle ODP.Net in C # ?

Avrò bisogno di controllare la syntax esatta, ma qui c’è un codice veloce in cima alla mia testa

 using (OracleConnection con = new OracleConnection(...)) { con.Open(); OracleCommand cmd = con.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "update table set col1 = :param1, col2 = :param2 where key = :keyValue"; cmd.Parameters.AddWithValue("param1", 1); cmd.Parameters.AddWithValue("param2", "Text data"); cmd.Parameters.AddWithValue("keyValue", "1"); cmd.ExecuteNonQuery(); } 

Quanto sopra crea un object comando imposta il comando su per eseguire un’istruzione SQL Update, in questo esempio mostro un modo per impostare una query con parametri, dovresti sempre andare con una query parametrizzata. Una volta che il comando è configurato, basta chiamare ExecuteNonQuery per eseguire effettivamente il comando.

Quindi, dopo un po ‘di investigazione e di lavoro su questo per un po’, ho scoperto che il metodo che ho usato per aggiungere un nuovo parametro al comando di connessione è il seguente. Non ho trovato il metodo come è stato affermato nel post precedente. Intendiamoci che sto usando un object query con cui sto passando i valori.

  public Boolean InsertMethod(Query _query) { var success = false; var queryString = string.Format(@"INSERT INTO TABLE(ID, OWNER, TEXT) VALUES (TABLE_SEQ.NEXTVAL,:OWNER, :TEXT)"); try { using (OracleConnection con = new OracleConnection(ConString)) { con.Open(); OracleCommand cmd = con.CreateCommand(); cmd.CommandText = queryString; cmd.Parameters.Add("OWNER", _query.Owner); cmd.Parameters.Add("TEXT", _query.Text); int rowsUpdated = cmd.ExecuteNonQuery(); if (rowsUpdated > 0) success = true; } return success; } catch (Exception ex) { log.Error(ex); throw; } } 

Oltre alla risposta di @ Chris, ecco la pagina della documentazione della class OracleParameter che contiene un codice di esempio sull’utilizzo di OracleCommand per eseguire l’ Update s.

EDIT: Ecco il punto di ingresso per la documentazione di ODP.net .