Oracle RDBMS; C#;读取十进制值时出现InvalidCast异常

时间:2015-01-15 17:48:22

标签: c# oracle oracle11g odp.net oracle12c

  DbDataReader _dbReader = query.SendQuery(queryTxt, ref error, fromWhere) //custom method 
  string value;
  ...
  try
  {
       DateTime dateTimeValue = (DateTime)_dbReader[i];
       value = dateTimeValue.ToString("yyyy-MM-dd HH:mm:ss");
  }
  catch(Exception ex)
  {
       **value = _dbReader[i].ToString();**  // culprit statement
  }
}
catch (System.OverflowException ex)
{
   // handled gracefully
}

如果我正在阅读简单查询的结果,如:

select 1, 1.4, 2/3 from dual

然后,代码在读取最后一个值2/3时返回InvalidCastException 我不知道的是什么时候它可以将每个其他十进制转换为字符串,为什么不是2/3? 我知道它将具有Oracle RDBMS允许的最大精度,但仍然是小数。

除了上述问题的复杂性之外,代码在Oracle 11 *客户端工具上运行良好,但问题仅在于Oracle 12c客户端工具。我试图浏览OracleDataAccess API的文档,我找不到与此问题相关的任何更新。

我可以为InvalidCastException添加另一个catch块并尝试使用GetDecimal或类似的东西来避免错误,但是如果该值不是小数而且catch块中的代码再次引发异常,那该怎么办呢?

有什么想法/想法吗?

0 个答案:

没有答案