我使用Oracle.DataAccess.Client
我ASP.Net应用与的Oracle数据库工作执行使用Oracle ODP.Net一个更新语句。没有帮助文档MSDN对于ODP.Net和Oracle的文档确实很糟糕。我无法找到这个简单问题的答案。如何在C#
无法执行简单的更新语句而无需构建dataset
对象并更新dataset
?
如何使用执行更新语句Oracle ODP.Net in C#?
我使用Oracle.DataAccess.Client
我ASP.Net应用与的Oracle数据库工作执行使用Oracle ODP.Net一个更新语句。没有帮助文档MSDN对于ODP.Net和Oracle的文档确实很糟糕。我无法找到这个简单问题的答案。如何在C#
无法执行简单的更新语句而无需构建dataset
对象并更新dataset
?
如何使用执行更新语句Oracle ODP.Net in C#?
我需要检查的确切语法,但这里是一些简单的代码,把我的头顶部
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
即可执行该命令。
甜!谢谢!虽然我找不到“AddWithValue”。 ExecuteNonQuery是关键,我试过了一个参数化查询,它工作。我想我可以从这里即兴创作。真的很感谢你的时间! – 2011-04-23 20:26:47
Karthik使用参数化查询的优势在于它为您提供所有SQL注入保护。 – SurfingSanta 2015-07-23 23:40:29
和也!我只想修改一些东西来添加允许Oracle执行更新命令的事务控制: 'code' OracleCommand cmd = con.CreateCommand(); OracleTransaction oratrans = con.BeginTransaction(IsolationLevel.ReadCommitted); cmd.Transaction = oratrans; 。 。 。 cmd.ExecuteNonQuery(); oratrans.Commit(); 你的, – 2017-03-08 18:10:42
除@ Chris的回答外,这里是OracleParameter类的文档页面,其中使用OracleCommand执行Update
s的示例代码。
编辑:这是ODP.net documentation的入口点。
你提供的示例代码的链接是关于如何使用OracleDataReader获取数据,而不是如何更新数据(按照我最初的问题)。我已经浏览了ODP.net文档,找不到更新的类似代码示例。我希望MSDN已经记录了这个:(。 – 2011-04-23 20:36:16
因此,经过一番调查和工作了一段时间,我发现我用来给连接命令添加一个新参数的方法如下。我没有找到上一篇文章中提到的方法。请注意,我正在使用一个查询对象,我正在传递值。
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;
}
}
看起来像你插入两次。'cmd.ExecuteNonQuery();' – Halter 2017-01-23 20:32:46
你是对的,谢谢。它已被编辑。 – nshouppuohsn 2017-01-27 04:03:11
ODP.Net实现IDbCommand,IDbConnection和IDbDataAdapter为什么你不能用它们来准备和执行你的Update语句。 – adt 2011-04-23 18:11:32