如何在C#中使用Oracle ODP.Net执行更新语句

我正在使用Oracle.DataAccess.Client在我的ASP.Net应用程序中使用Oracle数据库。 在MSDN中没有针对ODP.Net的帮助文档, Oracle的文档真的非常糟糕。 我无法找到这个简单问题的答案。

是否无法在不构建dataset对象和更新dataset情况下执行简单的更新语句?

如何在C#中使用Oracle ODP.Net执行更新语句?

我需要检查确切的语法,但这里有一些快速的代码

 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(); } 

上面创建一个命令对象设置命令以执行SQL Update语句,在本例中我展示了一种设置参数化查询的方法,你应该总是使用参数化查询。 设置命令后,只需调用ExecuteNonQuery即可实际执行命令。

所以经过一段时间的调查并将这个问题解决了一段时间后,我发现我用来向连接命令添加新参数的方法如下所示。 我没有找到上一篇文章中所述的方法。 请注意,我正在使用一个查询对象,我正在传递值。

  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; } } 

继@Chris的回答之后,这里是OracleParameter类的文档页面,其中包含使用OracleCommand执行Update的示例代码。

编辑:这是ODP.net文档的入口点。