【问题标题】:Typecast any OleDbReader Double/Int16/Int32/Int64 to C# double?将任何 OleDbReader Double/Int16/Int32/Int64 类型转换为 C# double?
【发布时间】:2014-02-22 00:00:01
【问题描述】:

如果我创建一个新的 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()会处理这些情况吗?

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

【问题讨论】:

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


    【解决方案1】:

    您应该调用Convert.ToDouble(),它对每种类型都有一个处理程序。

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

    【讨论】:

    • 完美。不知道我以前怎么没有遇到过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多