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"]);
==>>>
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());
应该是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"] 输出来看看什么东西。
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类型
num里是我写进去的序号整数:1 2 3 4 5...,我就是奇怪为什么不能把int直接(double)成double类型
#7
我把数据库的格式num的数据类型改写成foat以后就没问题了:
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//这样就没有转换错误了
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"]);
==>>>
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());
应该是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"] 输出来看看什么东西。
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类型
num里是我写进去的序号整数:1 2 3 4 5...,我就是奇怪为什么不能把int直接(double)成double类型
#7
我把数据库的格式num的数据类型改写成foat以后就没问题了:
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//这样就没有转换错误了
double x = (double)ds_rt.Tables[0].Rows[N]["num"];//这样就没有转换错误了
#8
convert.todouble();