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

كيفية: استدعاء إجراء مخزن معلمات باستخدام ADO.NET و Visual C#.NET

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

اضغط هنا لرابط المقالة باللغة الانجليزية310070
ل Microsoft Visual Basic.NET نسخة من هذه المقالة، راجع 308049.
ل Visual Microsoft c + +.NET نسخة من هذه المقالة، راجع 310071.
ل Microsoft Visual J#.NET نسخة من هذه المقالة، راجع 320627.

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

في هذه المهمة

الموجز
هناك عدة طرق لاستخدام ADO.NET لاستدعاء إجراء مخزن وللعودة قيم الإرجاع وإرجاع معلمات، بما في ذلك:
  • استخدام كائن DataSet إلى تجميع الصفوف التي تم إرجاعها والعمل مع هذه الصفوف بالإضافة إلى القيم المرجعة والمعلمات الإرجاع.
  • استخدام كائن DataReader لجمع الصفوف التي تم إرجاعها، للانتقال من خلال هذه الصفوف، ثم إلى تجميع القيم المرجعة والمعلمات الإرجاع.
  • استخدم الأسلوب ExecuteScalar لإرجاع القيمة من العمود الأول من الصف الأول النتائج مع القيم المرجعة والمعلمات الإرجاع. يكون هذا مفيداً باستخدام الدالات التجميعية.
  • استخدم الأسلوب ExecuteNonQuery لإرجاع القيم المرجعة والمعلمات الإرجاع. يتم تجاهل أي الصفوف التي تم إرجاعها. هذا مفيد جداً لتنفيذ الاستعلامات الإجرائية.
تحتوي هذه المقالة يوضح الأساليب الثلاثة الأخيرة ويستخدم كل من SqlCommand والكائنات OleDbCommand . تأكد من أن تقوم بنسخ التعليمات البرمجية فقط الموفر المدار الذي تستخدمه. إذا لم تكن متأكداً من الموفر المدار الذي يجب استخدامه، قم بزيارة موقع Microsoft Developer Network على ويب التالي:في كل من النماذج في هذه المقالة، تتم إضافة المعلمات إلى مجموعة المعلمات لكائن الأمر . عند استخدام كائن SqlCommand ، غير أن إضافة المعلمات في أي ترتيب معين، ولكن يجب أن تكون المعلمات لها الاسم الصحيح. عند استخدام كائن OleDbCommand ، يجب إضافة المعلمات بالترتيب الصحيح، ولا يمكنك استخدام المعلمات حسب الاسم.

back to the top

استخدام DataReader لإرجاع الصفوف والمعلمات

يمكنك استخدام الكائن DataReader لإرجاع دفق بيانات القراءة فقط أو للأمام فقط. يمكن أن تأتي المعلومات التي يحتويها DataReader من إجراء مخزن. يستخدم هذا المثال الكائن DataReader لتشغيل إجراء مخزن الذي يحتوي على معلمة إخراج وإدخال وينتقل من خلال السجلات التي تم إرجاعها لعرض معلمات الإرجاع.
  1. إنشاء الإجراء التالي على خادم يقوم بتشغيل Microsoft SQL Server:
    Create Procedure TestProcedure(  @au_idIN varchar (11),  @numTitlesOUT Integer OUTPUT)AS select A.au_fname, A.au_lname, T.title from authors as A join titleauthor as TA onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINset @numTitlesOUT = @@Rowcountreturn (5) 					
  2. إنشاء جديد Visual C#.مشروع تطبيق Windows NET.
  3. استخدام عبارة استخدامالنظام ومساحات System.Data حيث لا تحتاج إلى تأهيل التعريفات بمساحات لاحقاً في التعليمات البرمجية. إضافة هذا الرمز إلى أعلى الوحدة النمطية للتعليمات البرمجية النموذج. تأكد من نسخ التعليمات البرمجية فقط الموفر الذي اخترته.عميل SQL
    using System.Data.SqlClient;					
    موفر OLE DB البيانات
    using System.Data.OleDb;					
  4. استبدال الرمز في الحدث Form_Load الخاصة بالتعليمة البرمجية التالية:عميل SQL
    SqlConnection PubsConn = new SqlConnection ("Data Source=server;integrated " + "Security=sspi;initial catalog=pubs;");SqlCommand testCMD = new SqlCommand ("TestProcedure", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;SqlParameter RetVal = testCMD.Parameters.Add    ("RetVal", SqlDbType.Int);RetVal.Direction = ParameterDirection.ReturnValue;SqlParameter IdIn = testCMD.Parameters.Add   ("@au_idIN", SqlDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;SqlParameter NumTitles = testCMD.Parameters.Add    ("@numtitlesout", SqlDbType.VarChar, 11);NumTitles.Direction = ParameterDirection.Output ;        IdIn.Value = "213-46-8915";PubsConn.Open();SqlDataReader myReader = testCMD.ExecuteReader();Console.WriteLine ("Book Titles for this Author:");while (myReader.Read())    {     Console.WriteLine ("{0}", myReader.GetString (2));   };myReader.Close() ;Console.WriteLine("Number of Rows: " + NumTitles.Value );Console.WriteLine("Return Value: " + RetVal.Value);					
    موفر OLE DB البيانات
    OleDbConnection PubsConn = new OleDbConnection    ("Provider=SQLOLEDB;Data Source=server;" +    "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand    ("TestProcedure", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add    ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;OleDbParameter NumTitles = testCMD.Parameters.Add    ("@numtitlesout", OleDbType.VarChar, 11);NumTitles.Direction = ParameterDirection.Output;        IdIn.Value = "213-46-8915";PubsConn.Open();OleDbDataReader myReader = testCMD.ExecuteReader();Console.WriteLine ("Book Titles for this Author:");while (myReader.Read())    {     Console.WriteLine ("{0}", myReader.GetString (2));   };myReader.Close() ;Console.WriteLine("Number of Rows: " + NumTitles.Value );Console.WriteLine("Return Value: " + RetVal.Value);					
  5. قم بتعديل سلسلة الاتصال لكائن اتصال للإشارة إلى الكمبيوتر الذي يستخدم SQL Server.
  6. تشغيل التعليمات البرمجية. لاحظ DataReader يقوم باسترداد السجلات ومن ثم إرجاع قيم المعلمات. يمكنك استخدام الأسلوب قراءة الكائن DataReader للتنقل خلال السجلات التي تم إرجاعها.

    يعرض إطار الإخراج عناوين الكتب اثنين قيمة الإرجاع ل 5 ومعلمه الإخراج، الذي يحتوي على العدد من السجلات (2). لاحظ أنه يجب إغلاق DataReader في التعليمات البرمجية لمشاهدة قيم المعلمات. بالإضافة إلى ذلك، لاحظ أنك لا تملك للتنقل خلال كافة السجلات لرؤية معلمات الإرجاع إذا تم إغلاق DataReader .
back to the top

استخدم الأسلوب ExecuteScalar لكائن الأوامر

يمكنك استخدام الأسلوب ExecuteScalar لكائن الأوامر استرداد قيم المعلمات. بالإضافة إلى ذلك، ExecuteScalar بإرجاع العمود الأول من الصف الأول من الإجراء المخزن. هذا مفيد جداً للدالات التجميعية كما في المثال التالي.
  1. إنشاء الإجراء التالي على خادم يقوم بتشغيل SQL Server:
    Create Procedure TestProcedure2(  @au_idIN varchar (11))As/* set nocount on */ select count (T.title) from authors as A join titleauthor as TA onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINReturn(5)					
  2. إنشاء جديد Visual C#.مشروع تطبيق Windows NET.
  3. استخدام عبارة استخدامالنظام ومساحات System.Data حيث لا تحتاج إلى تأهيل التعريفات بمساحات لاحقاً في التعليمات البرمجية. إضافة هذا الرمز إلى أعلى الوحدة النمطية للتعليمات البرمجية النموذج. تأكد من أن تقوم بنسخ التعليمات البرمجية فقط لموفر الذي اخترته.عميل SQL
    using System.Data.SqlClient;					
    موفر OLE DB البيانات
    using System.Data.OleDb;					
  4. إضافة التعليمة البرمجية التالية إلى الحدث Form_Load :عميل SQL
    string strCount;SqlConnection PubsConn = new SqlConnection    ("Data Source=server;integrated " +    "Security=sspi;initial catalog=pubs;");SqlCommand testCMD = new SqlCommand    ("TestProcedure2", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;SqlParameter RetVal = testCMD.Parameters.Add    ("RetVal", SqlDbType.Int);RetVal.Direction = ParameterDirection.ReturnValue;SqlParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", SqlDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;        IdIn.Value = "213-46-8915";PubsConn.Open();strCount =testCMD.ExecuteScalar ().ToString() ;Console.WriteLine("Number of Rows: " + strCount );Console.WriteLine("Return Value: " + RetVal.Value);					
    موفر OLE DB البيانات
    string strCount;OleDbConnection PubsConn = new OleDbConnection    ("Provider=SQLOLEDB;Data Source=server;" +    "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand    ("TestProcedure2", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add    ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";PubsConn.Open();strCount = testCMD.ExecuteScalar().ToString() ;Console.WriteLine("Number of Rows: " + strCount);Console.WriteLine("Return Value: " + RetVal.Value);					
  5. قم بتعديل سلسلة الاتصال لكائن اتصال للإشارة إلى الكمبيوتر الذي يستخدم SQL Server.
  6. تشغيل التعليمات البرمجية. لاحظ أن الأسلوب ExecuteScalar لكائن الأمر بإرجاع المعلمات. ExecuteScalar أيضا بإرجاع قيمة العمود 1، الصف الأول من مجموعة الصفوف التي تم إرجاعها. ولذلك، قيمة intCount هو نتيجة الدالة عدد من الإجراء المخزن.
back to the top

استخدم الأسلوب ExecuteNonQuery لكائن الأوامر

يستخدم هذا النموذج الأسلوب ExecuteNonQuery لتشغيل الاستعلام وإرجاع قيم المعلمات. ExecuteNonQuery أيضا بإرجاع عدد السجلات التي تأثرت بعد تشغيل الاستعلام. على الرغم من ذلك، ExecuteNonQuery لا يرجع أية صفوف أو أعمدة من الإجراء المخزن.

الأسلوب ExecuteNonQuery مفيداً جداً عند استخدام عبارات INSERT أو التحديث أو الحذف إذا كان لديك معرفة عدد الصفوف التي تم تغييرها فقط. في إجراء مخزن الذي كنت تستخدم عبارة SELECT، تتلقى-1 لأن تتأثر أية صفوف إلى الاستعلام.
  1. إنشاء الإجراء التالي على الكمبيوتر الذي يستخدم SQL Server:
    Create Procedure TestProcedure3(  @au_idIN varchar (11),  @au_fnam varchar (30))As/* set nocount on */ Update authors set au_fname = @au_fnamwhere au_id = @au_idin	return (5)					
  2. إنشاء جديد Visual C#.مشروع تطبيق Windows NET.
  3. استخدام عبارة استخدامالنظام ومساحات System.Data حيث لا تحتاج إلى تأهيل التعريفات بمساحات لاحقاً في التعليمات البرمجية. إضافة هذا الرمز إلى أعلى الوحدة النمطية للتعليمات البرمجية النموذج. تأكد من أن تقوم بنسخ التعليمات البرمجية فقط لموفر الذي اخترته.عميل SQL
    using System.Data.SqlClient;					
    موفر OLE DB البيانات
    using System.Data.OleDb;					
  4. استبدال الرمز أدناه الحدث Form1_Load خاصة في الوحدة النمطية للتعليمات البرمجية Form1 التعليمة البرمجية التالية:عميل SQL
    string strRowAffect;SqlConnection PubsConn = new SqlConnection    ("Data Source=server;integrated Security=sspi;" +    "initial catalog=pubs;");SqlCommand testCMD = new SqlCommand    ("TestProcedure3", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;SqlParameter RetVal = testCMD.Parameters.Add    ("RetVal", SqlDbType.Int);RetVal.Direction = ParameterDirection.ReturnValue;SqlParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", SqlDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;SqlParameter FnameIn = testCMD.Parameters.Add    ("@au_fnam", SqlDbType.VarChar, 30);FnameIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";FnameIn.Value = "Marjorie";PubsConn.Open();strRowAffect =testCMD.ExecuteNonQuery ().ToString() ;Console.WriteLine("Number of Rows: " + strRowAffect );Console.WriteLine("Return Value: " + RetVal.Value);					
    موفر OLE DB البيانات
    int intRowAffected;OleDbConnection PubsConn = new OleDbConnection    ("Provider=SQLOLEDB;Data Source=server;" +    "integrated Security=sspi;initial catalog=pubs;");OleDbCommand testCMD = new OleDbCommand    ("TestProcedure3", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;OleDbParameter RetVal = testCMD.Parameters.Add    ("RetVal", OleDbType.Integer);RetVal.Direction = ParameterDirection.ReturnValue;OleDbParameter IdIn = testCMD.Parameters.Add    ("@au_idIN", OleDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;OleDbParameter FnameIn = testCMD.Parameters.Add   ("@au_fname", OleDbType.VarChar, 30);FnameIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";FnameIn.Value = "Marjorie";PubsConn.Open();intRowAffected = testCMD.ExecuteNonQuery();Console.WriteLine("Number of Rows affected: " + intRowAffected);Console.WriteLine(RetVal.Value);					
  5. قم بتعديل سلسلة الاتصال لكائن اتصال للإشارة إلى الكمبيوتر الذي يستخدم SQL Server.
  6. تشغيل التعليمات البرمجية. يعرض إطار الإخراج عدد الصفوف المتأثرة (إينترووافيكت) وقيمة المعلمة الإرجاع.
back to the top
مراجع
لمزيد من المعلومات، قم بزيارة مواقع "msdn على ويب" التالية:back to the top

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

خصائص

رقم الموضوع: 310070 - آخر مراجعة: 06/12/2012 03:49:00 - المراجعة: 1.0

Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB310070 KbMtar
تعليقات
/html>did=1&t=">> y>html>>ef="" ng-click="setLanguage(language);" class="ng-binding" id="language-es-py">Paraguay - Español
Venezuela - Español
did=1&t=">050&did=1&t=">&did=1&t=">