SORU
15 Mayıs 2009, Cuma


Yazın 'Sistem nesne artığını açılamıyor.' type 'Sistem DBNull.String`

Benim app yukarıdaki hatayı aldım. Burada orijinal kodu

public string GetCustomerNumber(Guid id)
{
     string accountNumber = 
          (string)DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidmyApp, 
                          CommandType.StoredProcedure, 
                          "GetCustomerNumber", 
                          new SqlParameter("@id", id));
     return accountNumber.ToString();
 }

İle değiştirdim

public string GetCustomerNumber(Guid id)
{
   object accountNumber =  
          (object)DBSqlHelperFactory.ExecuteScalar(connectionStringSplendidCRM, 
                                CommandType.StoredProcedure, 
                                "spx_GetCustomerNumber", 
                                new SqlParameter("@id", id));
    if (accountNumber is System.DBNull)
    {
       return string.Empty;
    }
    else
    {
       return accountNumber.ToString();
    }
}

Bu çevrede daha iyi bir yolu var mı?

CEVAP
15 Mayıs 2009, Cuma


Basit bir genel işlevi ile bunu çok kolay yapabilirsiniz. Sadece bunu yap:

return ConvertFromDBVal<string>(accountNumber);

kullanım fonksiyonu

public static T ConvertFromDBVal<T>(object obj)
{
    if (obj == null || obj == DBNull.Value)
    {
        return default(T); // returns the default value for the type
    }
    else
    {
        return (T)obj;
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012