أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

استثناء InvalidCastException عند الرجوع إلى قيمة DataColumn هي NULL

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية310371
تشير هذه المقالة إلى مساحات أسماء Microsoft .NET Framework فئة مكتبة التالية:
  • System.Data
  • System.Data.SqlClient
الأعراض
عند الرجوع قيمة DataColumn هي NULL ، سواء المكتوبة أو مصنف تظهر استثناء.

مكتوب وحدات DataSet تتلقى الاستثناء التالي:
حدث استثناء غير معالج من النوع 'System.Data.StrongTypingException' في invalidcast.exe
معلومات إضافية: لا يمكن الحصول على القيمة لأنها DBNULL.
مصنف وحدات DataSet تتلقى الاستثناء التالي:
حدث استثناء غير معالج من النوع 'System.InvalidCastException' في microsoft.visualbasic.dll
معلومات إضافية: الممثلون من نوع 'DBNULL' إلى النوع 'سلسلة' غير صالح.
السبب

سبب 1

عند استخدام مكتوب DataSet يحدث الاستثناء عند الرجوع إلى قيمة العمود غير NULL.

سبب 2

عند استخدام مصنف DataSet قيمة العمود NULL ويتم متغير التي قمت بتعيين أنه لا يعتمد NULL.
الحل

سبب 1

اختبار العمود NULL قبل الوصول إلى القيمة الخاصة به. في مصنف DataSet ، استخدم الطريقة DataRow.IsNull. في مصنف DataSet ، استخدم الخاصية DataRow.IscolumnnameNull.

سبب 2

استخدام متغير أنواع البيانات المناسبة والتي يمكن تخزين NULL.
تصريح
يعتبر هذا السلوك حسب التصميم.
معلومات أخرى

خطوات إعادة إنشاء السلوك

  1. بدء تشغيل Microsoft Visual Studio .NET.
  2. إنشاء مشروع تطبيق Windows جديد في Visual Basic .NET. يتم إضافة Form1 إلى المشروع بشكل افتراضي.
  3. تأكد من أن يحتوي المشروع على مرجع إلى مساحة الاسم System.Data.
  4. ضع عنصر تحكم زر في Form1.
  5. تغيير خاصية اسم الزر إلى btnUntype والخاصية النص إلى Untype.
  6. استخدام العبارة عمليات الاستيراد في مساحة اسم النظام ومساحة System.Data بحيث غير مطلوبة تأهيل التعريفات في مساحة الأسماء لاحقاً في التعليمات البرمجية. إضافة التعليمات البرمجية التالية إلى مقطع "Declarations عام" Form1:
       Imports System   Imports System.Data   Imports System.Data.SqlClient					
  7. قم بإضافة التعليمات البرمجية التالية في الحدث btnUntype:
            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. تعديل سلسلة الاتصال (myserver) كاسم الملقم المناسب للبيئة الخاصة بك.
  9. حفظ المشروع الخاص بك. من القائمة تصحيح ، انقر فوق ابدأ تشغيل المشروع.
  10. انقر فوق Untype. لاحظ الاستثناء السابقة المذكورة مصنف DataSet.
  11. uncomment جملة IF و ثم التعليق أسطر أسفل عبارة IF للتحقق من وجود NULL.
  12. حفظ المشروع الخاص بك. من القائمة تصحيح ، انقر فوق ابدأ ثم قم بتشغيل المشروع. لاحظ أن يعرض مربع الرسالة "القيمة هي Null".
  13. ضع عنصر تحكم زر آخر في Form1.
  14. تغيير خاصية اسم الزر إلى btntype والخاصية النص إلى نوع.
  15. إنشاء مصنف DataSet باستخدام جدول العملاء في قاعدة بيانات Northwind. إعادة تسمية SQLDataAdaptersqlda.
  16. قم بإضافة التعليمات البرمجية التالية إلى الحدث btntype:
            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. قم بتشغيل التطبيق ثم انقر فوق الزر نوع. لاحظ الاستثناء.
  18. uncomment كتلة If... Then من التعليمات البرمجية ومن ثم تعليق الأخيرتين سطور التعليمات البرمجية.
  19. حفظ التطبيق، ومن ثم قم بتشغيل التطبيق ولاحظ مربع الرسالة.
مراجع
للحصول على مزيد من المعلومات حول إنشاء DataSet مكتوب انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
315678كيفية إنشاء استخدام DataSet مكتوب باستخدام Visual Basic .NET
لمزيد من المعلومات حول ADO.NET انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
313590تخطيط لـ ADO.NET

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 310371 - آخر مراجعة: 02/27/2007 04:28:08 - المراجعة: 2.7

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

  • kbmt kbprb kbsystemdata KB310371 KbMtar
تعليقات
&t=">m); y>16); })).replace("R", (8 | Math.floor(Math.random() * 3)).toString(16)); var m = document.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);
did=1&t=">050&did=1&t=">&did=1&t=">r varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" .microsoft.com/ms.js">