无法读取从存储过程返回的null

时间:2014-04-15 14:35:56

标签: c# sql stored-procedures null visual-studio-2005

我有一个存储过程,它返回单个记录,null或数据(如果存在)。

在我的代码中,我需要检查该过程返回的内容。什么是正确的方法?

现在,当运行代码时,我有一个异常说:“当没有数据存在时无效尝试读取。”我正在使用Visual Studio 2005。

这是我的方法:

public static String GetRegionBasedOnIso(String isoNum)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString);
        String region = null;
        try
        {
            using (SqlCommand cmd = new SqlCommand("MyProc", conn))
            {
                conn.Open();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@isoNum", isoNum);
                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    if (dr.IsDBNull(0))
                    {
                        return null;
                    }
                    else
                    {
                        region = (String)dr["region"];
                    }
                }
            }
        }
        catch (Exception e)
        {
            throw new System.Exception(e.Message.ToString());
        }
        finally
        {
            conn.Close();
        }
        return region;
    }

我该怎么做才能修复它?谢谢

1 个答案:

答案 0 :(得分:1)

if (dr.Read())
{
    if (dr.IsDBNull(0))
    {
        return null;
    }
    else
    {
        region = (String)dr["region"];
    }
}
else
{
    // do something else as the result set is empty
}