Boş bir DataColumn'ın değeri başvuruda bulunacağınız zaman ınvalidcastexception özel durum

Makale çevirileri Makale çevirileri
Makale numarası: 310371 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanlarına başvurulmaktadır:
  • System.Data
  • System.Data.SqlClient
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

NULL, yazılı veya türlenmemiş olup olmadığını DataColumn değerinin başvuru yaptığınızda, bir özel durumu alıyorsunuz.

Klavyeyle yazılan DataSet için aşağıdaki özel durum alırsınız:
Içinde invalidcast.exe 'System.Data.StrongTypingException' türünde işlenmeyen bir özel durum oluştu
Ek bilgi: DBNULL olduğundan değer alınamıyor.
Türlenmemiş DataSet için aşağıdaki özel durumu alıyorsunuz:
Içinde microsoft.visualbasic.dll 'System.InvalidCastException' türünde işlenmeyen bir özel durum oluştu
Ek bilgi: '' Dize' yazın DBNULL' türünden yayını geçerli değil.

Neden

Neden 1

Yazılı bir DataSet kullandığınızda, sütun değeri NULL başvuruda bulunacağınız zaman, özel durum nedeniyle oluşur.

Neden 2

Bir DataSet türlenmemiş kullandığınızda, sütunun değeri NULL olduğundan ve NULL olduğu için atadığınız değişken desteklemiyor.

Çözüm

Neden 1

Sütun için NULL, değeri erişmeden önce sınayın. Bir türlenmemiş DataSet içinde DataRow.IsNull yöntemini kullanın. Bir yazılı DataSet içinde DataRow.IscolumnnameNull özelliğini kullanın.

Neden 2

Bir değişken NULL olarak depolayabileceğiniz bir uygun veri türünü kullanın.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. Microsoft Visual Studio .NET'i başlatın.
  2. Yeni bir Windows uygulaması projesi, Visual Basic. NET'te oluşturun. Form1, varsayılan olarak projeye eklenir.
  3. Projenizi, System.Data ad boşluğuna başvuru içerdiğinden emin olun.
  4. Bir Düğme denetimi Form1 yerleştirin.
  5. Name özelliği düğmenin btnUntypeUntype için <a2>Text</a2> özelliğini değiştirin.
  6. ımports deyiminde System ad ve System.Data ad alanı kullanabilir, böylece, kodunuzun daha sonra bu ad boşluklarında bildirimlerinde nitelemek için gerekli değildir. Form1 "Genel bildirimleri" bölümüne aşağıdaki kodu ekleyin:
       Imports System
       Imports System.Data
       Imports System.Data.SqlClient
    					
  7. BtnUntype olayda aşağıdaki kodu ekleyin:
            Dim str As String
            Dim ds As New DataSet()
            Dim r As DataRow
            Dim con As New SqlConnection("server=myserver;integrated security=sspi;database=northwind")
            Dim da As New SqlDataAdapter("select * from customers where customerid='ANTON'", con)
            da.Fill(ds, "customer")
            r = ds.Tables(0).Rows(0)
            'Uncomment to check for Null. 
            'If r.IsNull("fax") Then
            '   MessageBox.Show("Value is Null")
            'End If
            str = r("fax") 'Comment line to check for Null.
            MessageBox.Show(str) 'Comment line to check for Null.
            
    					
  8. Ortamınız için uygun sunucu adıyla bağlantı dizesi (sunucum) değiştirin.
  9. Projenizi kaydetmek. Hata Ayıkla) menüsünde, projenizin çalıştırmak için Başlat ' ı tıklatın.
  10. Untype ' ı tıklatın. Bir DataSet türlenmemiş için önceki belirtilen özel dikkat edin.
  11. IF deyimini uncomment ve sonra IF deyimi için NULL denetlemek için aşağıdaki satırları ekleyin.
  12. Projenizi kaydetmek. Hata ayıklama) menüsünde, Başlat ' ı tıklatın ve sonra projeyi çalıştırın. Ileti kutusu "Değeri olan boş" görüntülendiğine dikkat edin.
  13. Form1 başka bir Düğme denetimi yerleştirin.
  14. Name özelliği düğmenin btntypetürüne <a2>Text</a2> özelliğini değiştirin.
  15. Yazılı bir DataSet, Northwind veritabanındaki Müşteriler tablosunu kullanarak oluşturun. SQLDataAdaptersqlda için yeniden adlandırın.
  16. Btntype olay için aşağıdaki kodu ekleyin:
            sqlda.Fill(DataSet11)
            Dim str As String
            Dim int As Integer
            Dim cust As DataSet1.CustomersRow
            cust = DataSet11.Customers.Rows(0)
            'Uncomment to catch null values.  
            'If cust.IsFaxNull Then
            '    MessageBox.Show("Value is Null")
            'End If
            str = cust.Fax() 
            MessageBox.Show(str)
            '    Comment line to check for Null.
    					
  17. Uygulamayı çalıştırın ve sonra türü</a0> düğmesini tıklatın. Özel dikkat edin.
  18. Kod If... Then bloğu uncomment ve sonra kodu son iki satırı ekleyin.
  19. Uygulamanın kaydetmek ve uygulamayı çalıştırın ve ileti kutusu dikkat edin.

Referanslar

Yazılı bir DataSet oluşturma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
315678Oluşturmak için Visual Basic .NET kullanılarak yazılan DataSet kullanın.
ADO.NET hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
313590ADO.NET için yol haritası

Özellikler

Makale numarası: 310371 - Last Review: 27 Şubat 2007 Salı - Gözden geçirme: 2.7
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbprb kbsystemdata KB310371 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:310371

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com