Merhabalar, benimde arada karşılaştığım bir hata olan C# Nesne DBNull’dan Diğer Türlere Atanamaz Hatası ‘nın çözümü vereceğim bu yazıda… Her yazılımcı bir kez karşılaşmıştır diye düşünüyorum. Çünkü aslında bu hata kodlarımızla ilgili değil aksine veritabanı ile ilgilidir. Aslında veritabanı demekte tam doğru olmayacaktır. Gelin bu hatanın çözümüne bir bakalım.
C# Nesne, DBNull’dan Diğer Türlere Atanamaz Hatası Çözümü
C# projelerinizde, veritabanı bağlantısı yaptınız kaydetme ve okuma kısmında bir sıkıntınız yok. Güzel bir şekilde her türlü işlerinizi yapıyorsunuz. Ancak bazen bu hatayı alıyorsunuz. Önce size bu hatanın neden ortaya çıktığını sonra da nasıl çözeceğinizi anlatmaya çalışacağım.
Hatanın Sebebi
DB burada database demektir. Yani Database’den dönen null değeri C#’ta diğer türlere atayamazsınız diyor. Database’den dönen değerleri kast ediyor.
Bu hata, Null değeri kabul etmeyen bir işlemde, veritabanından dönen değerin null olması durumunda çıkar. Diyelim ki bir işlem yaptınız ve bu işlem bir gridview deki kolonları gizlemek olsun ama bu işlemde gizlemek istediğiniz kolonları veritabanından çekiyor olun. Eğer gizlenmesi gereken bir kolon yoksa yani veritabanından yaptığınız sorgulama sonucunda null geliyor ise gizlenecek bir kolon olmadığından yani değer null olduğundan ve null ifadesi de kolon adı istenen işlemde kullanılamayacağından dolayı bu hatayı alırsınız.
Hatanın Çözümü
Bunu çözebileceğiniz ilk yol sql sorgusunu düzeltmektedir. Bunun içinde ISNULL(param, 0) metodudur.
select isnull(kolon_Adi, 'Boş ise Bu çıksın') from Tablo
Bunu yapamıyorsanız ya da yapmak istemiyorsanız bunu kullanabilirsiniz.
// Bu hatalı olan pnm.QTY = dr["kolon"] !=null? Convert.ToInt32(dr["QTY"]) : 0; // Bu hatasız olan pnm.QTY = dr["kolon"] != DBNull.Value? Convert.ToInt32(dr["QTY"]) : 0;
Yukarıda bir ternary if görüyorsunuz. Burada kolonun null olup olmaması kontrol edilmek isteniyor. ilk satırda null kullanılmış. Yani buradan anladığımız kadarı ile C# için null ile database’den gelen null aynı olmuyor.
DBNull.Value ile bu hatanın da önüne geçmiş oluyoruz.
C# Nesne DBNull’dan Diğer Türlere Atanamaz Hatası Çözümü yazımızda bu kadar arkadaşlar. Bir sık karşılaşılan hatanın da çözümü paylaşmış oldum. Diğer yazılarımızda görüşmez üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
471. Yazı bitti.