将SQL int转换为C#字符串

时间:2012-10-04 09:34:20

标签: c# sql sql-server

我一直在尝试将SQL-Server DB中的INT加载到我的C#应用​​程序中并将其转换为字符串。

基本上,它是我想用作字符串的数据库表的ID /主键。 这就是我的工作:

string Variable_ID;
Variable_ID = HandleDBNull(reader, "ID");

我得到一个IndexOutOfRange异常。

这是HandleDBNullfunction:

    private string HandleDBNull(SqlDataReader r, string columnName)
    {
        if (!r.IsDBNull(r.GetOrdinal(columnName)))
            return r[columnName].ToString();
        else 
            return String.Empty;
    }

它适用于字符串列,因此转换似乎有问题。我已经尝试过Convert.ToString并得到了同样的错误。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我猜你的columnNamecolumnOrder与其他人不一致。一个是错的。由于它们表达相同的信息,因此一个是多余的。我会改用:

// probably should be renamed, btw
private string isDBNull(SqlDataReader r, int columnOrder)
{
    if (!r.IsDBNull(columnOrder))
    {
        return r[columnOrder].ToString();
    }
    else return "";
}

显然是:

Variable_ID = isDBNull(reader, 0);

虽然我不是相当确定我想要一切都是字符串。

答案 1 :(得分:2)

您可以尝试 - 因为您的条件基于columnOrder

 ... 
 return r[columnOrder].ToString();

建议

private bool isDBNull(SqlDataReader r, string columnName, int columnOrder)
    {
        if (!r.IsDBNull(columnOrder))
        {
            return true;
        }
        return false;
    }

答案 2 :(得分:1)

简化代码:

string Variable_ID;
Variable_ID = isDBNull(reader, "ID");

private string isDBNull(SqlDataReader r, string columnName)
{
    if (!r.IsDBNull(r.GetOrdinal(columnName)))
        return r[columnName].ToString();
    else 
        return string.Empty;
}