我构建了一些应用程序来将数据从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没有识别十进制值。
提前致谢。
答案 0 :(得分:0)
我卡住了我还没有得到任何解决方案。所以我直接对查询进行了更改。将字段转换为字符串,然后在C#
中将其转换为doubleSELECT ..., 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)));
}
....
这个有效。