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ş:
Yazın Arabiriminin nesne artığını açıl...
Bu ViewData öğe anahtarı 'ANAHTAR...
Oluşturulmuş Bir Sistem Başarılı.Bir Y...
Geçersiz kılınmış bir Sistem için en i...
Soran Yansıması sonucu ne olur Sistem ...