Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SqlDataReader向我显示InvalidCastException(C#Windows窗体)_C#_Sqldatareader_.net - Fatal编程技术网

SqlDataReader向我显示InvalidCastException(C#Windows窗体)

SqlDataReader向我显示InvalidCastException(C#Windows窗体),c#,sqldatareader,.net,C#,Sqldatareader,.net,InvalidCastException错误我得到了“price1=(float)r[“Price”];“我是c#和任何编程语言的新手,请指导我 假设价格是浮动的,您应该使用: 假设价格是浮动的,您应该使用: 这意味着您的“价格”列不是浮点值-如果您这样强制转换,类型必须完全正确,您可以尝试更宽松的方式,将其转换为浮点值: price1 = r.GetFloat(0); // first column 如果“价格”列包含不同的数据类型(很可能),则应使用本机类型,并将变量设置为该类型,即,如果

InvalidCastException错误我得到了“price1=(float)r[“Price”];“我是c#和任何编程语言的新手,请指导我

假设价格是浮动的,您应该使用:


假设价格是浮动的,您应该使用:

这意味着您的“价格”列不是浮点值-如果您这样强制转换,类型必须完全正确,您可以尝试更宽松的方式,将其转换为浮点值:

price1 = r.GetFloat(0); // first column
如果“价格”列包含不同的数据类型(很可能),则应使用本机类型,并将变量设置为该类型,即,如果它是一个
double
make
price1
a
double
变量,则应改为:

price1 = Convert.ToSingle(r["Price"]);
这意味着您的“价格”列不是浮点值-如果您这样强制转换,类型必须完全正确,您可以尝试更宽松的方式,将其转换为浮点值:

price1 = r.GetFloat(0); // first column
如果“价格”列包含不同的数据类型(很可能),则应使用本机类型,并将变量设置为该类型,即,如果它是一个
double
make
price1
a
double
变量,则应改为:

price1 = Convert.ToSingle(r["Price"]);

您可以用更安全的方式重写代码,如下所示:

price1 = reader.GetDouble(0);
所以,您可以确定,无论发生什么情况,阅读器和连接都将为您关闭和处理。如果调试这段代码,您将看到在运行时price1变量中将存储什么类型的对象,然后您可以在需要时转换为该类型,因为如果转换为float失败,我认为您没有从读取器正确获取float


SqlDataReader还有其他检索数据的方法,如果您确定Price是fload,您可以使用
reader.GetSingle
方法,例如,如果它是int,您可以使用
reader.GetInt
等等。

您可以以更安全的方式重写代码,如下所示:

price1 = reader.GetDouble(0);
所以,您可以确定,无论发生什么情况,阅读器和连接都将为您关闭和处理。如果调试这段代码,您将看到在运行时price1变量中将存储什么类型的对象,然后您可以在需要时转换为该类型,因为如果转换为float失败,我认为您没有从读取器正确获取float

SqlDataReader还有其他方法来检索数据,如果您确定Price是fload,您可以使用
reader.GetSingle
方法,例如,如果它是int,您可以使用
reader.GetInt
等等