指定的强制转换无效 - SQL float到C#double

Ski*_*erm 7 .net c# sql-server-2008

在我的c#代码中,我有一个double,我试图将其设置为我的SQL Management 2008 R2数据库中的float类型的值(对应于c#中的double,对吧?).当我使用这种语法

double x = (double)reader["column1"]; //reader is SqlDataReader object
Run Code Online (Sandbox Code Playgroud)

我收到错误"指定的强制转换无效".

是什么赋予了?

Ode*_*ded 7

您可以GetDouble直接:

reader.GetDouble(reader.GetOrdinal("column1"))
Run Code Online (Sandbox Code Playgroud)


Cod*_*kus 7

我建议使用SqlDataReader对象提供的辅助类...

double dbl = reader.GetDouble(reader.GetOrdinal("DoubleColumn"));
Run Code Online (Sandbox Code Playgroud)

如果列可能为空,您应该考虑到...

double dbl = (reader["DoubleColumn"] != DBNull.Value ? dr.GetDouble(dr.GetOrdinal("DoubleColumn")) : 0.0);
Run Code Online (Sandbox Code Playgroud)