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块中的代码再次引发异常,那该怎么办呢?
有什么想法/想法吗?