خطأ عند محاولة استدعاء الأسلوب تحضير قبل إضافة معلمات: "استثناء غير معالج من النوع 'System.Data.SqlClient.SqlException' حدث في system.data.dll"

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

310368
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
للحصول على إصدار Microsoft Visual C# .NET من هذه المقالة، راجع 311348.

تشير هذه المقالة إلى مساحات أسماء Microsoft .NET Framework فئة مكتبة التالية:
  • System.Data.OleDb
  • System.Data.SqlClient
الأعراض
عند إنشاء أمر معلمات مقابل Microsoft SQL Server 7.0 إذا استدعاء الأسلوب تحضير قبل إضافة معلمات الأمر تتلقى رسالة الخطأ التالية:
حدث استثناء غير معالَج نوع حدث 'System.Data.SqlClient.SqlException' في system.data.dll.
معلومات إضافية: خطأ نظام.
لا تحدث هذه المشكلة في SQL Server 2000.
السبب
تحدث هذه المشكلة في SQL Server 7.0 بسبب حسب التصميم لا يمكن تشغيل الأسلوب تحضير قبل إضافة معلمات. ينطبق هذا على معظم أنظمة قاعدة البيانات.

لا يقوم SQL Server 2000 بإنشاء استثناء above-mentioned لأن فإنه لا يتم تشغيل تحضير حتى يتم تنفيذ الأمر الأول. يمنع هذا الأمثلية الحمل تحضير إذا كان يتم تنفيذ لم الأوامر فيما بعد.
الحل
لحل هذه المشكلة، لا استدعاء تحضير الأسلوب حتى بعد إضافة المعلمات.
معلومات أخرى

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

يستخدم نموذج التعليمة البرمجية لمتابعة جدول المنطقة Northwind نموذج قاعدة البيانات.
  1. بدء تشغيل Microsoft Visual Studio .NET.
  2. إنشاء مشروع Visual Basic تطبيق Windows جديد. يتم إضافة Form1 إلى المشروع بشكل افتراضي.
  3. تأكد من أن يحتوي المشروع على مرجع إلى مساحة الاسم System.Data ثم إضافة مرجع إلى مساحة الأسماء هذه إذا لم يكن.
  4. ضع عنصر تحكم زر في Form1. تغيير خاصية اسم الزر إلى btnTest وتغيير الخاصية Text إلى اختبار.
  5. استخدم عبارة عمليات الاستيراد على مساحات أسماء نظامSystem.Data.OleDb و System.Data.SqlClient بحيث غير مطلوبة تأهيل التعريفات في مساحة الأسماء لاحقاً في التعليمات البرمجية. إضافة التعليمات البرمجية التالية إلى مقطع "Declarations عام" Form1:
    Imports SystemImports System.Data.OleDbImports System.Data.SqlClient					
  6. قم بإضافة التعليمة البرمجية التالية إلى إطار التعليمات البرمجية بعد المنطقة "مصمم نماذج Windows إنشاء التعليمات البرمجية".

    ملاحظةيجب تغيير <username>"معرّف المستخدم" وكلمة المرور = < كلمة المرور القوية > إلى القيم الصحيحة قبل تشغيل هذه التعليمات البرمجية. تأكد من أن "معرّف المستخدم" لديه الأذونات المناسبة لإنجاز هذه العملية على قاعدة البيانات.
        Private Sub btnTest_Click(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles btnTest.Click        Dim myConnString As String = _            "User ID=<username>;password=<strong password>;Initial Catalog=Northwind;Data Source=myServer"        Dim id As Integer = 25        Dim desc As String = "myFirstRegion"        Dim rConn As SqlConnection = New SqlConnection(myConnString)        rConn.Open()        Dim command As SqlCommand = New SqlCommand("", rConn)        command.CommandText = "insert into Region (RegionID, RegionDescription)" & _                              "values (@id, @desc)"        'SQL Server 7.0 throws an exception here.        'Comment the following line to resolve this problem against SQL Server 7.0.        command.Prepare()        command.Parameters.Add("@id", SqlDbType.Int, 4)        command.Parameters.Add("@desc", SqlDbType.Char, 50)        'You can call Prepare after you set up CommandText and parameters.        command.Prepare()         command.Parameters(0).Value = id        command.Parameters(1).Value = desc        command.ExecuteNonQuery()        MessageBox.Show("Updated Successfully")    End Sub					
  7. تعديل سلسلة الاتصال (myConnString) كما هو مناسب للبيئة الخاصة بك.
  8. حفظ المشروع الخاص بك. من القائمة تصحيح ، انقر فوق ابدأ تشغيل المشروع.
  9. انقر فوق اختبار. إذا كنت متصلاً بقاعدة بيانات SQL Server 7.0 بإنشاء الرمز الاستثناء above-mentioned.

    إذا كنت متصلاً بقاعدة بيانات SQL Server 2000، يتم تشغيل التعليمات البرمجية بشكل صحيح كما يظهر مربع رسالة "تم التحديث بنجاح".
  10. لحل هذه المشكلة من SQL Server 7.0 التعليق مهلة استدعاء command.Prepare التي تسبق برمجية إضافة المعلمات ثم قم بتشغيل المشروع مرة أخرى.
مراجع
للحصول على مزيد من المعلومات حول كائنات ADO.NET وبناء الجملة ارجع إلى التالية Microsoft .NET Framework تطوير مجموعة البرامج (SDK) الوثائق:
الوصول إلى البيانات باستخدام ADO.NET
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx

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

خصائص

رقم الموضوع: 310368 - آخر مراجعة: 02/21/2014 00:43:51 - المراجعة: 2.8

  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic 2005
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbnofix kbprb kbsqlclient kbsystemdata KB310368 KbMtar
تعليقات