将SQL server数据库float型的数据读取至double型数组时发生错误~

时间:2022-11-14 13:19:54
如题: 数据库中数据表存有float型数据, 代码运行至红色部分出现错误, 提示:

“System.InvalidCastException”类型的未经处理的异常在 mscorlib.dll 中发生 
其他信息: 无法将类型为“System.Data.DataRow”的对象强制转换为类型“System.IConvertible”。

查了好多,都没解决,正在做毕设,时间紧迫,便来求助各位朋友! 代码如下:

[align=left]            //连接数据库
            string strcon = @"Server=.;DataBase=jiafayunsuan;Integrated Security=SSPI";
            SqlConnection sqlcon = new SqlConnection(strcon);
            string strselect = @"Select * from shuju";
            SqlCommand sqlcmd = new SqlCommand(strselect,sqlcon);
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter(strselect,sqlcon);  //数据中转接口
            sqlcon.Open();

            //数据库数据转入dataset的datatable中,并存至数组中
            sda.Fill(ds,"shuju");  //当一次填充多个表时,Fill()内应为(ds,"表名")  即给dataset中设置一个名为shuju的表(datatable)
            double[] addend = new double[ds.Tables["shuju"].Rows.Count];   //[]内表示表[shuju]中的行数,即令一维数组元素等于行数
            for (int i = 0; i < ds.Tables["shuju"].Rows.Count; i++)    //Tables为dataset的属性成员,表示其中的表的集合
            {
                 addend[i] = Convert.ToDouble(ds.Tables["shuju"].Rows[i]);
            }[/align]

7 个解决方案

#1


断点调试下,看下ds.Tables["shuju"].Rows[i]的值

#2


红色部分改成addend[i] = Convert.ToDouble(ds.Tables["shuju"].Rows[i]["你的列名"]);

#3


float Fvar = ds.Tables["shuju"].Rows[i]["price"];
 addend[i] = Convert.ToDouble(Fvar ); 

#4


少了一个列定位

#5


ds.Tables["shuju"].Rows[i] 返回的是个datarow对象,不是一个值啊,哥们!

#6


ds.Tables["shuju"].Rows[i] [j]
低级错误

#7


谢谢楼上的各位,问题已解决,可能等级太低,没法给楼层回复,谢谢啦~

#1


断点调试下,看下ds.Tables["shuju"].Rows[i]的值

#2


红色部分改成addend[i] = Convert.ToDouble(ds.Tables["shuju"].Rows[i]["你的列名"]);

#3


float Fvar = ds.Tables["shuju"].Rows[i]["price"];
 addend[i] = Convert.ToDouble(Fvar ); 

#4


少了一个列定位

#5


ds.Tables["shuju"].Rows[i] 返回的是个datarow对象,不是一个值啊,哥们!

#6


ds.Tables["shuju"].Rows[i] [j]
低级错误

#7


谢谢楼上的各位,问题已解决,可能等级太低,没法给楼层回复,谢谢啦~