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

时间:2013-06-18 16:35:04

标签: c# database oledbdatareader

我正在尝试将重试的值从数据库解析为doublelonginteger,但它会抛出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

2 个答案:

答案 0 :(得分:2)

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

double hours = (double) oleDbDataReader1["Hours"];

除非您的值实际数据库中的字符串(在这种情况下您应该修复它),否则没有理由将转换为字符串。 (如果它不是映射到double的类型,你当然应该更改你投射的内容。)

编辑:如果它在数据库中是非数字的,那么您可能需要使用double.Parse - 但您可能想要指定文化。例如,假设它们的形式都是“10.2”而不是“10,2”(正如某些文化会使用的那样),你会想要这样的东西:

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

答案 1 :(得分:1)

我用:

 HRS = oledbDataReader1.GetDouble(iColumn);

其中iColumn是查询中的列索引