Unable to cast object of type 'System.DBNull' to type 'System.String'

16 浏览
0 Comments

Unable to cast object of type 'System.DBNull' to type 'System.String'

我有一个可用的代码来生成一个字符串,它是sb.ToString()。

DataTable dt = dbaccess.GetDataTable("TEST"); // 获取数据表
List drlist = dt.AsEnumerable().ToList(); // 每行只有一个元素。
StringBuilder sb = new StringBuilder(); 
foreach (DataRow row in drlist)
{
    foreach (string str in row.ItemArray)
    {
        sb.Append(str);
    }
}

数据表是

NULL
0
138
337
1666
1680
2511
8113

你可以看到有一个"NULL"导致了错误"无法将类型为'System.DBNull'的对象强制转换为'System.String'。

如何修复它呢?

0
0 Comments

问题原因:出现"Unable to cast object of type 'System.DBNull' to type 'System.String'"的错误是因为在将一个类型为System.DBNull的对象转换为System.String类型时发生了错误。

解决方法:可以通过在转换前进行判断,避免将DBNull类型的对象转换为String类型。可以使用以下代码作为解决方法:

foreach (object str in row.ItemArray) 
{ 
    if (DbNull.Value.Equals(str))
       sb.Append("NULL");
    else
       sb.Append(str.ToString()); 
}

以上代码中,通过使用`DbNull.Value.Equals(str)`来判断是否为DBNull类型的对象,如果是则将"NULL"追加到字符串中,否则将对象转换为String类型并追加到字符串中。这样可以避免将DBNull类型的对象转换为String类型时出现错误。

0
0 Comments

在上述代码中,出现了一个问题:无法将类型为'System.DBNull'的对象转换为类型'System.String'。这个问题的原因是,当尝试将一个数据库中的空值(NULL)转换为字符串时,会发生转换错误。

要解决这个问题,可以使用以下方法之一:

1. 使用Convert.ToString方法:

if (!row.IsNull("column"))
{
    foreach (object obj in row.ItemArray)
    {
        sb.Append(Convert.ToString(obj));
    }
}

2. 使用DBNull.Value判断空值:

if (row["column"] != DBNull.Value)
{
    foreach (object obj in row.ItemArray)
    {
        sb.Append(obj.ToString());
    }
}

通过采用上述方法之一,我们可以避免将类型为'System.DBNull'的对象转换为类型'System.String'时出现的问题。

0
0 Comments

无法将类型为'System.DBNull'的对象强制转换为类型'System.String'的错误是因为在代码中尝试将一个DBNull对象强制转换为字符串类型。这通常发生在使用数据库查询结果时,当某些列的值为空时,数据库返回的是DBNull对象。

要解决这个问题,可以使用以下方法之一:

1. 在转换之前,可以先检查对象是否为DBNull类型。如果是,则可以跳过该对象或者进行其他处理。

2. 使用Convert类中的相应方法来进行转换,这些方法会自动处理DBNull对象,并返回一个默认值(如空字符串)。

3. 使用条件语句或三元运算符来检查对象是否为DBNull类型,并根据需要进行处理。

下面是一个使用条件语句进行检查的示例:

foreach(var obj in row.ItemArray)
{
    if(obj is DBNull)
    {
        // 处理DBNull对象的情况
    }
    else
    {
        sb.Append(obj.ToString());
    }
}

另一个示例是使用Convert类的方法进行转换:

foreach(var obj in row.ItemArray)
{
    string value = Convert.ToString(obj);
    sb.Append(value);
}

通过这些方法,我们可以避免将DBNull对象强制转换为字符串类型的错误,并正确地处理数据库查询结果中的空值。

0