C#中怎么无法将数据库表中的int类型转化成double呢

时间:2021-03-02 14:50:32
我建立的数据中有一列数据类型为int,下面是表生产的数据库脚本:
CREATE TABLE [dbo].[RT] (
[num] [int] NOT NULL ,//-------取这一列的数据
[User_ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[timer] [datetime] NOT NULL ,
[U] [float] NOT NULL ,
[I] [float] NOT NULL ,
[angle] [float] NOT NULL ,
[P] [float] NOT NULL ,
[Q] [float] NOT NULL ,
[cos] [float] NOT NULL 
) ON [PRIMARY]
---------------------
DataSet ds_rt = new DataSet();
......
string select_new = "********";
            select_new_cmd = new SqlCommand(select_new, sqlcon);
            da.SelectCommand = select_new_cmd;
            da.Fill(ds_rt);

double x = (double)ds_rt.Tables[0].Rows[N]["num"];//这里提示错误如下:

未处理的“System.InvalidCastException”类型的异常出现在 ConsoleApplication4.exe 中。

其他信息: Specified cast is not valid.
-----------------------
很奇怪这里取数据库中num列(int类型数据),然后(double)怎么会报错呢?
请高手给分析一下。

8 个解决方案

#1


double.Parse(....);

#2


double x = (double)ds_rt.Tables[0].Rows[N]["num"];

 ==>>>

double x =  Convert.ToDouble(ds_rt.Tables[0].Rows[N]["num"]);

#3


ds_rt.Tables[0].Rows[N]["num"];

应该是object 类型;
double.Parse();肯定不行

2喽的应该是 double.Parse(ds_rt.Tables[0].Rows[N]["num"].Tostring());

#4


 Convert.ToDouble(ds_rt.Tables[0].Rows[N]["num"]); 

#5


string select_new = "********"; //?
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//?错误的地方。

应该不是转化的问题。int 怎么都能变成double。

建议你把ds_rt.Tables[0].Rows[N]["num"] 输出来看看什么东西。

#6


5楼
num里是我写进去的序号整数:1  2  3 4 5...,我就是奇怪为什么不能把int直接(double)成double类型

#7


我把数据库的格式num的数据类型改写成foat以后就没问题了:
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//这样就没有转换错误了

#8


convert.todouble();

#1


double.Parse(....);

#2


double x = (double)ds_rt.Tables[0].Rows[N]["num"];

 ==>>>

double x =  Convert.ToDouble(ds_rt.Tables[0].Rows[N]["num"]);

#3


ds_rt.Tables[0].Rows[N]["num"];

应该是object 类型;
double.Parse();肯定不行

2喽的应该是 double.Parse(ds_rt.Tables[0].Rows[N]["num"].Tostring());

#4


 Convert.ToDouble(ds_rt.Tables[0].Rows[N]["num"]); 

#5


string select_new = "********"; //?
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//?错误的地方。

应该不是转化的问题。int 怎么都能变成double。

建议你把ds_rt.Tables[0].Rows[N]["num"] 输出来看看什么东西。

#6


5楼
num里是我写进去的序号整数:1  2  3 4 5...,我就是奇怪为什么不能把int直接(double)成double类型

#7


我把数据库的格式num的数据类型改写成foat以后就没问题了:
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//这样就没有转换错误了

#8


convert.todouble();