我正在使用Oracle.DataAccess.Client
在 ASP.Net 应用程序中使用 Oracle 数据库。 ODP.Net MSDN 中没有帮助文档, Oracle 的文档非常糟糕。我无法找到这个简单问题的答案。
是否无法在不构建dataset
对象并更新dataset
的情况下执行简单的更新语句?
如何在 C#中使用 Oracle ODP.Net 执行更新语句?
答案 0 :(得分:16)
我需要检查确切的语法,但这里有一些快速的代码
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
即可实际执行命令。
答案 1 :(得分:3)
因此经过一段时间的调查并将这个问题解决了一段时间之后,我发现我用来向连接命令添加新参数的方法如下所示。我没有找到上一篇文章中所述的方法。请注意,我正在使用一个查询对象,我正在传递值。
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;
}
}
答案 2 :(得分:0)
除了@Chris的回答,这里是OracleParameter类的文档页面,其中包含使用OracleCommand执行Update
的示例代码。
编辑:这是ODP.net documentation的入口点。