【问题标题】:Cannot Update Row In Oracle DB Using C# Library无法使用 C# 库更新 Oracle DB 中的行
【发布时间】:2014-05-06 00:37:41
【问题描述】:

当我想通过 asp.net C# 方法在 oracle 数据库中更新类型为“日期”的行时,会出现以下错误:

错误: ORA-00932:不一致的数据类型:预期 NUMBER 得到了 TIMESTAMP

代码:

string query = String.Format("update mms_meetings m set m.end_date = :end_date where m.id = :id");

    OracleCommand cmd = new OracleCommand("", GetDBConnection());
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = query;

    OracleParameter opId = new OracleParameter();
    opId.DbType = DbType.Int32;
    opId.Value = meetId;
    opId.ParameterName = "id";

    cmd.Parameters.Add(opId);

    OracleParameter opDateEnd = new OracleParameter();
    opDateEnd.DbType = DbType.DateTime;
    opDateEnd.Value = dateEnd;
    opDateEnd.ParameterName = "end_date";
    cmd.Parameters.Add(opDateEnd);

    cmd.ExecuteNonQuery();
    cmd.Dispose();

    CloseDBConnection(); 

【问题讨论】:

  • 您的数据库中的end_date 是哪种类型?
  • 尝试更改将参数添加到查询中使用的顺序的顺序 - 首先是end_dateid - 其次。
  • @Mikhail Oracle 不使用参数名称来区分合适的吗?
  • @HamletHakobyan 有时是,有时不是,(例如,stackoverflow.com/questions/959242/…),因此值得尝试以正确的顺序排列它们:)
  • 按正确的顺序放置是问题所在。

标签: c# database oracle


【解决方案1】:

1) 您必须按照表格列中指定的确切格式发送日期。检查日期列的默认格式。喜欢

'yyyy/MM/dd'

2) 如果您使用的是 OleDb 或 ODBC 连接,它们都使用 位置参数,因此添加参数的顺序非常重要。尝试更改参数的顺序,看看是否有帮助。

【讨论】:

  • 位置参数是正确的答案。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 2018-10-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
相关资源
最近更新 更多