已经实现了一个userdata.dll组件,实现与数据库的连接
要实现从一个表中读取一列,并取得该列的值的总和.
程序如下:
其中FPara.connStr就是组件中的数据库连接字符串
SqlCommand mycom=FPara.connStr.CreateCommand();
mycom.CommandText="select TotalMoney from D_J110 ";
SqlDataReader pricer=mycom.ExecuteReader();
int TotalMoneyColPos=pricer.GetOrdinal("TotalMoney");
System.Console.WriteLine(TotalMoneyColPos);
float total=0;
while(pricer.Read())
{
    float totalvalue=pricer.GetFloat (TotalMoneyColPos);  //提示在这一行出错误
    total=total+totalvalue;
}
System.Console.WriteLine(total);
错误提示:
未处理的“System.InvalidCastException”类型的异常出现在 system.data.dll 中。其他信息: 指定的转换无效。各位请帮忙看下

解决方案 »

  1.   

    pricer.GetFloat (TotalMoneyColPos);  把 TotalMoneyColPos 换成索引数字
    例如:
    pricer.GetFloat(0);
      

  2.   

    数据库中的TotalMoney字段类型就是float的
    另外如果输出一下会发现全是0,这是为什么
    就是先去掉float totalvalue=pricer.GetFloat (TotalMoneyColPos);
    只是输出TotalMoneyColPos
      

  3.   

    我改过了
    把float totalvalue=pricer.GetFloat (TotalMoneyColPos);
    改成float totalvalue=pricer["TotalMoney"];
    这样就可以了
    但是对于上面的问题仍然是不明白啊