【发布时间】:2013-07-29 07:32:37
【问题描述】:
我正在尝试在 c# 中创建一个准备好的语句。
出于某种原因,我尝试的所有操作都以异常结束。
*。这是我现在的代码:
我得到的异常是:“由于对象的当前状态,操作无效。”
using (OracleCommand cmd = new OracleCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into daily_cdr_logs " +
"(message) " +
"values " +
"(:message)";
cmd.Parameters.Add(:message, msg);
//OracleDbType.Int32, postpaid_duration, ParameterDirection.Input);
cmd.Prepare();
cmd.ExecuteNonQuery();
}
- 我看到有人用Parameters.AddWithValue 来做这件事。但由于某种原因,我在 OracleCommand.Parameters 中找不到 AddWithValue 函数,我已经导入了 Oracle.DataAccess.Client 并且我有 oracle DataAccess 参考,使用 Visual Studio 2010。
【问题讨论】:
-
你之前打开过连接吗?
-
异常是由 Prepare 行还是 ExecuteNonQuery 行引发的?
-
试试
cmd.Parameters.Add("message", DbType.Varchar).value = msg; -
拳头——您的代码将无法编译,因为
:message不是有效的C# 标识符。添加参数的行应该是:cmd.Parameters.Add(":message", msg);第二——在准备阶段注册并在准备好的查询的每次调用中提供值会更有效。