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

كيفية تنفيذ SQL ذات مخزنة إجراءات باستخدام .NET موفر .NET ODBC وقم Visual C#

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

اضغط هنا لرابط المقالة باللغة الانجليزية310130
للحصول على إصدار Microsoft Visual Basic .NET من هذه المقالة، راجع 309486.
للحصول على إصدار Microsoft Visual C++ .NET من هذه المقالة، راجع 310142.

تشير هذه المقالة إلى مساحة الاسم Microsoft .NET Framework فئة مكتبة التالية:
  • Microsoft.Data.Odbc

في هذه المهمة

الموجز
هذه خطوة بخطوة توضح كيفية استدعاء إجراء SQL Server المخزنة ذات معلمات باستخدام موفر مدارة .NET ODBC و Visual C# .NET.

بينما يتم تنفيذ إجراء مخزن ذي معلمات باستخدام موفر .NET ODBC مختلفة قليلاً من تنفيذ نفس الإجراء باستخدام SQL أو موفر OLE DB هناك اختلاف واحد هام: يجب استدعاء الإجراء المخزن باستخدام بناء جملة ODBC CALL بدلاً من اسم إجراء مخزن. للحصول على معلومات إضافية حول بناء الجملة التالي CALL راجع الموضوع "استدعاءات الإجراء" في المرجع للمبرمجين ODBC في مكتبة MSDN.

back to the top

أمثلة بناء المكالمة

  1. وفيما يلي مثال على بناء جملة استدعاء إجراء فعلية مخزنة في قاعدة بيانات نموذج Northwind يتوقع معلمة إدخال واحدة:
    {CALL CustOrderHist (?)}
  2. وفيما يلي مثال على بناء جملة استدعاء إجراء مخزن يتوقع معلمة إدخال واحدة ثم يعيد معلمة إخراج واحد "و" قيمة إرجاع. يمثل الحرف النائب الأول قيمة الإرجاع:
    {? = CALL Procedure1 (?, ?)
  3. ODBC .NET مدارة موفر ، مثل موفر OLE DB, يعالج المعلمتين عن طريق الموضع الترتيبي (يستند) لا حسب الاسم.
back to the top

اختبار Project - معلمة إدخال واحدة

  1. إذا لم تكن قد قمت بالفعل بتنفيذ ذلك ، تحميل وتثبيت الموفر المُدار .NET ODBC من موقع Microsoft التالي على الويب:
  2. بدء تشغيل Visual Studio .NET ثم قم بإنشاء Visual C# ".NET Windows تطبيق" جديد باسم من اختيارك.
  3. من القائمة المشروع انقر فوق إضافة مرجع ومن ثم انقر نقراً مزدوجاً فوق Microsoft.Data.ODBC.dll لإضافته إلى قائمة العناصر المحددة. إغلاق مربع الحوار مراجع.
  4. في جداً العلوي من الإطار "تعليمات برمجية" ، قم بإضافة العبارات التالية:
    using System.Data;using Microsoft.Data.Odbc;					
  5. قم بسحب عنصر تحكم زر من مربع الأدوات إلى النموذج الافتراضي.
  6. انقر نقراً مزدوجاً فوق زر أمر إلى التبديل إلى إطار التعليمات البرمجية لحدث انقر الزر. أدخل أو قم بلصق التعليمة البرمجية أدناه في إجراء الحدث انقر تعديل سلسلة اتصال ملقم SQL الضرورة:
    OdbcConnection cn;OdbcCommand cmd;OdbcParameter prm;OdbcDataReader dr;try {    //Change the connection string to use your SQL Server.    cn = new OdbcConnection("Driver={SQL Server};Server=servername;Database=Northwind;Trusted_Connection=Yes");    //Use ODBC call syntax.    cmd = new OdbcCommand("{call CustOrderHist (?)}", cn);    prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);    prm.Value = "ALFKI";    cn.Open();    dr = cmd.ExecuteReader();    //List each product.    while (dr.Read()) 	Console.WriteLine(dr.GetString(0));    //Clean up.    dr.Close();    cn.Close();}catch (OdbcException o) {    MessageBox.Show(o.Message.ToString());}					
  7. تشغيل المشروع. هذه التعليمة البرمجية استدعاءات الإجراء "CustOrderHist" تخزين تمرير في تعريف العميل كمعلمة إدخال واحد وإرجاع resultset. في "إطار الإخراج" راجع قائمة المنتجات طلبه العميل Northwind ALFKI.

    ملاحظة: اضغط CTRL + ALT + O لفتح "إطار الإخراج".
back to the top

اختبار Project - أنواع معلمة متعددة

  1. باستخدام "محلل استعلام" ، إنشاء إجراء مخزن التالية في قاعدة بيانات نموذج Northwind. يقبل معرف العميل كمعلمة إدخال هذا الإجراء المخزن وإرجاع إلى قائمة الطلبات قبل العميل، إرجاع الشحن المتوسط لكل ترتيب المدفوعة بواسطة هذا العميل باسم معلمة إخراج وإرجاع عدد الطلبات التي وضعها من قبل العملاء كقيمة إرجاع.
    CREATE PROCEDURE usp_TestParameters@CustID CHAR(5),@AvgFreight MONEY OUTPUTASSELECT @AvgFreight = AVG(Freight) FROM Orders WHERE CustomerID = @CustIDSELECT * FROM Orders WHERE CustomerID = @CustIDRETURN @@ROWCOUNT					
  2. كرر الخطوات من 1 إلى 6 أعلاه، استبدال التالية التعليمات البرمجية في إجراء الحدث Click لزر الأمر:
    OdbcConnection cn;try {    cn = new OdbcConnection("Driver={SQL Server};Server=servername;Database=Northwind;Trusted_Connection=Yes");    OdbcCommand cmd = new OdbcCommand("{? = call usp_TestParameters (?, ?)}", cn);    OdbcParameter prm = cmd.Parameters.Add("@RETURN_VALUE", OdbcType.Int);    prm.Direction = ParameterDirection.ReturnValue;    prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);    prm.Value = "ALFKI";    prm = cmd.Parameters.Add("@AvgFreight", OdbcType.Double);    prm.Direction = ParameterDirection.Output;    cn.Open();    OdbcDataReader dr = cmd.ExecuteReader();    while (dr.Read())         Console.WriteLine(dr.GetString(0));    dr.Close();    cn.Close();    Console.WriteLine("Average Freight (output param): {0}", cmd.Parameters[2].Value);    Console.WriteLine("Order Count (return value): {0}", cmd.Parameters[0].Value);}catch (OdbcException o) {    MessageBox.Show(o.Message.ToString());}					
  3. تشغيل المشروع. هذه التعليمة البرمجية استدعاءات الإجراء "usp_TestParameters" تخزين التي سيتم إنشاؤها في الخطوة 1 أعلاه، التمرير في تعريف العميل أنه معلمة إدخال واحدة وتقوم بإرجاع resultset و معلمة إخراج قيمة إرجاع. في الإطار "إخراج" ، يجب أن تشاهد قائمة الطلبات بواسطة العملاء Northwind ALFKI الشحن المتوسط المدفوعة العميل لكل ترتيب وعدد الطلبات.

    ملاحظة: اضغط CTRL + ALT + O لفتح الإطار إخراج.
back to the top

استكشاف الأخطاء وإصلاحها

  • لا يمكن استخدام الجملة ADO يستخدم عادة استدعاء الإجراءات المخزنة حيث يتم توفير اسم إجراء وحده كـ CommandText ، باستخدام موفر مدارة .NET ODBC.
  • عندما ترجع إجراء مخزن على resultset ، الإخراج معلمة (معلمات) و قيمة الإرجاع غير متوفرة حتى الوصول إلى resultset ثم إغلاق. على سبيل المثال، إذا قمنا حذف السطر "dr.Close()" في النموذج الثاني أعلاه نقوم سيكون غير قادر على استرداد قيم معلمة الإخراج "و" قيمة الإرجاع.
  • ODBC .NET مدارة موفر ، مثل موفر OLE DB, يعالج المعلمتين عن طريق الموضع الترتيبي (يستند) لا حسب الاسم.
  • لم تأتي مع Visual Studio .NET الموفر المُدار .NET ODBC ولكن يجب تحميل بشكل منفصل.
back to the top
مراجع
للحصول على معلومات إضافية حول بناء جملة ODBC CALL راجع الموضوع "استدعاءات الإجراء" في المرجع للمبرمجين ODBC في مكتبة MSDN.

back to the top

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

خصائص

رقم الموضوع: 310130 - آخر مراجعة: 07/01/2004 20:45:43 - المراجعة: 3.4

Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbmt kbdatabase kbhowtomaster kbsystemdata KB310130 KbMtar
تعليقات
ame>