1. Ana Sayfa
  2. C Sharp

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ü
C# Nesne, DBNull'dan Diğer Türlere Atanamaz Hatası Çözümü
+ - 0

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.

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)