Typecast任何OleDbReader Double / Int16 / Int32 / Int64到C#加倍?

时间:2014-01-29 22:06:26

标签: c# ms-access casting type-conversion oledb

如果我按如下方式创建一个新的OleDbReader:

OleDbCommand command = new OleDbCommand(query, ActiveConnection);
reader = command.ExecuteReader();
while(reader.Read())
{
   someList.Add((double)reader["columnHeader"]);
}

如果返回的数据输入为Int16 / Int32 / Int64而不是Double,我怎样才能确保我总是从指定的列返回一个double?我是否必须为每种可能的类型创建一个处理程序?我知道Double.Parse存在,但它只接受字符串。所以,虽然我事先可以使用ToString(),但我觉得这可能不是最直接的类型转换方式。

类似地,对于另一列,我希望确保任何String / Double / Int16 / Int32 / Int64值作为字符串返回。 ToString()会处理这些案件吗?

我对潜在的溢出错误很好,因为我会检查异常,无论如何。

1 个答案:

答案 0 :(得分:3)

你应该调用Convert.ToDouble(),它有每种类型的处理程序。

相比之下,ToString()适用于任何非空值。 (只要它覆盖ToString();所有数字类型都可以)