将 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
变量以找出来。
我正在使用 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
变量以找出来。