Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
C# 输入字符串格式不正确(未处理格式异常)_C#_Database_Oledbdatareader - Fatal编程技术网

C# 输入字符串格式不正确(未处理格式异常)

C# 输入字符串格式不正确(未处理格式异常),c#,database,oledbdatareader,C#,Database,Oledbdatareader,我试图将重试的值从数据库解析为double、long或integer,但它引发了FormatException。我需要你的帮助 在这段代码中,我试图从数据库中检索小时数,并将它们相加以计算输入数据库的总小时数 String hrs; Double resultHrs=0; while (oleDbDataReader1.Read()) { hrs = oleDbDataReader1["Hours"].ToString(); double HRS = double.Parse(

我试图将重试的值从数据库解析为
double
long
integer
,但它引发了FormatException。我需要你的帮助

在这段代码中,我试图从数据库中检索小时数,并将它们相加以计算输入数据库的总小时数

String hrs;
Double resultHrs=0;

while (oleDbDataReader1.Read())
{
    hrs = oleDbDataReader1["Hours"].ToString();
    double HRS = double.Parse(oleDbDataReader1["Hours"].ToString());
    resultHrs = resultHrs + HRS;
}// end while

首先不要进行字符串转换:

double hours = (double) oleDbDataReader1["Hours"];
除非您的值实际上是数据库中的字符串(在这种情况下,您应该修复它),否则没有理由将其转换为字符串。(如果它不是映射到
double
的类型,当然应该更改将其强制转换为的内容。)

编辑:如果它在数据库中不是数字,那么您可能需要使用
double.Parse
——但是您可能需要指定区域性。例如,假设它们都是“10.2”形式,而不是“10,2”(某些文化中会使用)形式,您可能会想要如下内容:

double hours = double.Parse((string) oleDbDataReader1["Hours"],
                            CultureInfo.InvariantCulture);

首先不要进行字符串转换:

double hours = (double) oleDbDataReader1["Hours"];
除非您的值实际上是数据库中的字符串(在这种情况下,您应该修复它),否则没有理由将其转换为字符串。(如果它不是映射到
double
的类型,当然应该更改将其强制转换为的内容。)

编辑:如果它在数据库中不是数字,那么您可能需要使用
double.Parse
——但是您可能需要指定区域性。例如,假设它们都是“10.2”形式,而不是“10,2”(某些文化中会使用)形式,您可能会想要如下内容:

double hours = double.Parse((string) oleDbDataReader1["Hours"],
                            CultureInfo.InvariantCulture);
我使用:

 HRS = oledbDataReader1.GetDouble(iColumn);
其中iColumn是查询中的列索引

我使用:

 HRS = oledbDataReader1.GetDouble(iColumn);

其中iColumn是查询中的列索引

@AbeerIslam:如果它总是用来保存一个数字,那么为什么它是文本呢?我必须在将值输入数据库时强制转换它,这是我这样做的原因,但我已经更改了它anyway@AbeerIslam:为什么是文本,如果它总是用来保存一个数字的话?我必须在将值输入数据库时强制转换它,这是我这样做的原因,但是我还是改变了它