返回ExecuteScalar的值强制类型转换,出现"指定数据转换无效"

来源:互联网 发布:编程1表示存在 编辑:程序博客网 时间:2024/05/18 18:47

1. 如果想统计某列总和,则使用 SELECT SUM(列名) 。注意,如果列中包含小数字,比如 1.25 ,则要使用double型而不能使用int型。代码演示:
double d = (double)Socut.Data.ExecuteScalar("SELECT SUM(s_id) FROM socut_data");
2. 如果想统计某列数据的平均值,则要使用 SELECT AVG(列名)。
3. 如果获取某列中的最大值,则使用SELECT MAX(列名)。反之,最小值为SELECT MIN(列名)


如果我用double d = (double)Data.ExecuteScalar("SELECT SUM(s_id) FROM socut_data");程序执行正常。
如果我用double d = (double)Data.ExecuteScalar("SELECT SUM(s_id) FROM socut_data",1);程序执行错误(指定数据转换无效)。

第一个是调用ACCESS数据库,第二个是调用SQL,这是为什么同一条命令会出错呢?

经过多次测试,结果让人痛苦:
int i = (int)Data.ExecuteScalar("SELECT COUNT(s_id) FROM socut_data");程序执行OK;
int i = (int)Data.ExecuteScalar("SELECT SUM(s_id) FROM socut_data");程序执行错误(指定数据转换无效)。 
后来经测试:
double d = (double)Data.ExecuteScalar("SELECT SUM(s_id) FROM socut_data");
改成:double d = Convert.ToDouble(Data.ExecuteScalar("SELECT SUM(s_id) FROM socut_data"));
我们可以强制进行转换,程序不会出错,且达到转换之结果。不会出现任何转换问题。

以下是该Data.ExecuteScalar方法
public object Data.ExecuteScalar(...)
{
   ........
}

原创粉丝点击