“FormatException未处理”输入字符串格式不正确

时间:2009-12-11 23:21:58

标签: c# .net asp.net

这里我试着编写一个函数,根据以下条件返回值...

如果

变量为NULL,返回DBNull.Value

ELSE

将变量转换为DataTypeCode作为函数参数提供给我的DataType。例如。

现在,在将变量转换为必需的DataType时,会抛出异常“FormatException未处理”。输入字符串的格式不正确。

如何解决此错误请帮助。

这是我的代码......

    public object ReturnDBNullOrRequiredDatatype(object IsThisObjectANull, TypeCode DataTypeCode)

    {
return IsThisObjectANull == null ? DBNull.Value : Convert.ChangeType(IsThisObjectANull, DataTypeCode);

    }

我将此功能称为 ReturnDBNullOrRequiredDatatype(txtFirstName.text,Integer变量的TypeCode) 第二个参数是要转换第一个参数的数据类型。

我正在尝试将此值返回

SqlParameter spAmount = new SqlParameter(...)     spName.value = DbNull.value

SqlParameter spName = new SqlParameter(...)  spAmount.value = Cint中(txtName.text)

我正在尝试使用该功能执行此操作。 我确保传递给该函数的值将满足我的转换类型,但仍然会出现此错误。

2 个答案:

答案 0 :(得分:1)

FormatException告诉您对象(在您的情况下是一个字符串)无法转换为请求的类型(在您的情况下,整数)。传入的字符串可能不是有效数字,例如“abc”而不是“123”;或者,对于您的DateTime案例,它不是当前文化的有效日期时间字符串,例如“12/31/2009 12:34:56”当你在dd / MM / yyyy语言环境中。尝试传递IFormatProvider,例如CultureInfo.InvariantCulture,它映射到您希望用户输入的日期时间格式。

答案 1 :(得分:1)

Convert.IsDBNull的文档说明如下:

  

返回指示对象是否为DBNull类型的指示。

该文档还明确指出DBNull.Value不等同于空引用或string.Empty

因此,如果您向其传递null或空字符串,则该方法应返回false。我相信你真正想做的是:

if (IsThisObjectANull == null)
    return DBNull.Value;
else
    return Convert.ChangeType(IsThisObjectANull, DataTypeCode);

...或更短的版本:

return IsThisObjectANull == null ? DBNull.Value : Convert.ChangeType(IsThisObjectANull, DataTypeCode);