将 COUNT(*) 查询结果转换为 .NET 数据类型

Convert COUNT(*) query result to .NET data type

我正在使用 Informix .NET Client SDK 运行 一个简单的 SQL 查询计算数据库视图中的项目,并在 C# 代码中使用查询的结果:

IfxConnection conn = ...;
var cmd = new IfxCommand("SELECT COUNT(*) FROM myview", conn);
IfxDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
    object val = dr.GetValue(0);
    int count = Convert.ToInt32(val);
}

效果很好,但我想应该可以直接从 DataReader 检索数字而无需 .NET 转换。我尝试了以下方法:

int count = dr.GetInt16(0);
int count = dr.GetInt32(0);
long count = dr.GetInt64(0);

所有这些都失败了 InvalidCastException。有谁知道 COUNT(*) 查询 returns 的数据类型以及可用于表示此值的 .NET 数据类型?

存储在 val 对象中的值将是任何类型的盒装实例,在 int count... 下面的行中放置一个断点并检查 val 变量以找出来。