2014-04-15 69 views
0

我有一個存儲過程返回單個記錄,或者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
if (dr.Read()) 
{ 
    if (dr.IsDBNull(0)) 
    { 
     return null; 
    } 
    else 
    { 
     region = (String)dr["region"]; 
    } 
} 
else 
{ 
    // do something else as the result set is empty 
}