İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp
  3. C# Nesne DBNull’dan Diğer Türlere Atanamaz Hatası Çözümü

C# Nesne DBNull’dan Diğer Türlere Atanamaz Hatası Çözümü

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...

C# Nesne, DBNull'dan Diğer Türlere Atanamaz Hatası Çözümü

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.

Yorum Yap

Yazar Hakkında

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım. Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir. Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.

Yorum Yap