将小数值从oracle保存到mongodb

时间:2015-01-27 07:54:02

标签: c# oracle mongodb

我构建了一些应用程序来将数据从oracle转换为mongodb。 应用程序工作正常,直到发生一些错误。 错误是Specified cast is not valid

我试图将数据检查到oracle,我发现一些记录的字段值为1.4211E-14

我使用OracleDataReader来接收值。我已经尝试使用以下代码将其转换为十进制:

OracleDataReader reader = command.ExecuteReader();

...

decimal value = 0; 
if (decimal.TryParse(reader.GetString(i), NumberStyles.Float, CultureInfo.InvariantCulture, out value))
    document.Set(reader.GetName(i), Convert.ToDouble(value));
else {
    var v = reader.GetDecimal(i) / (decimal)1000000;
    document.Set(reader.GetName(i), (float) v);
}

甚至是这样:

document.Set(reader.GetName(i), Convert.ToString(reader.GetDecimal(i)));

异常仍然发生。我该怎么做才能将1.4211E-14保存为mongodb中的数字数据?

我无法将值直接保存到mongodb,因为mongo没有识别十进制值。

enter image description here

提前致谢。

1 个答案:

答案 0 :(得分:0)

我卡住了我还没有得到任何解决方案。所以我直接对查询进行了更改。将字段转换为字符串,然后在C#

中将其转换为double
SELECT ..., TO_CHAR(a_field) as a_field FROM table;

然后

OracleDataReader reader = command.ExecuteReader();

...

var field = reader.GetName(i);
if (field.equals(a_field) {
    document.Set(field, Convert.ToDouble(reader.GetString(i)));
}

....

这个有效。