كائنات بيانات ActiveX

في مجال الحوسبة ، تتألف كائنات ActiveX Data Objects ( ADO ) من مايكروسوفت من مجموعة من كائنات نموذج كائنات المكونات (COM) للوصول إلى مصادر البيانات. وباعتبارها جزءًا من MDAC (مكونات الوصول إلى بيانات مايكروسوفت)، فإنها توفر طبقة وسيطة بين لغات البرمجة و OLE DB (وهي وسيلة للوصول إلى مخازن البيانات، سواء كانت قواعد بيانات أم لا، بطريقة موحدة). تُمكّن ADO المطورين من كتابة برامج تصل إلى البيانات دون الحاجة إلى معرفة كيفية تنفيذ قاعدة البيانات؛ إذ يكفي أن يكون المطورون على دراية بقاعدة البيانات للاتصال فقط. لا تتطلب ADO معرفة بلغة SQL للوصول إلى قاعدة البيانات، مع العلم أنه يمكن استخدامها لتنفيذ أوامر SQL مباشرةً (مع ما يترتب على ذلك من تبعية لنوع قاعدة البيانات المستخدمة).

قدمت مايكروسوفت ADO في أكتوبر 1996، ووضعت البرنامج كخليفة لطبقات الكائنات السابقة لمايكروسوفت للوصول إلى مصادر البيانات، بما في ذلك RDO (كائنات البيانات البعيدة) و DAO (كائنات الوصول إلى البيانات).

يتكون معرض ADO من أربع مجموعات واثني عشر قطعة.

مجموعات ADO

الحقول
تحتوي هذه المجموعة على مجموعة من كائنات الحقول. يمكن استخدام هذه المجموعة إما في كائن مجموعة سجلات أو في كائن سجل. في كائن مجموعة السجلات، يتوافق كل كائن حقل من كائنات الحقول المكونة لمجموعة الحقول مع عمود في كائن مجموعة السجلات هذا. أما في كائن السجل، فيمكن أن يكون الحقل عنوان URL مطلقًا أو نسبيًا يشير إلى مساحة اسم ذات بنية شجرية (تُستخدم لموفري البيانات شبه المهيكلة مثل موفر Microsoft OLE DB للنشر عبر الإنترنت) أو كمرجع لكائن التدفق الافتراضي المرتبط بكائن السجل هذا.
ملكيات
يمكن أن يحتوي الكائن على أكثر من كائن خاصية واحد، والتي يتم تضمينها في مجموعة خصائص الكائن.
حدود
يمكن أن يحتوي كائن الأمر على عدة أوامر معلمات لتغيير سلوكه المحدد مسبقًا، ويتم تضمين كل كائن من كائنات المعلمات في مجموعة المعلمات الخاصة بكائن الأمر.
أخطاء
تُمرَّر جميع الأخطاء التي يُنشئها المزوّد إلى مجموعة من كائنات الأخطاء، بينما تُخزَّن مجموعة الأخطاء نفسها في كائن اتصال. عندما تُنشئ عملية ADO خطأً، تُفرَغ المجموعة وتُنشأ مجموعة جديدة من كائنات الأخطاء داخلها.

كائنات ADO

اتصال
كائن الاتصال هو اتصال ADO بمخزن البيانات عبر OLE DB. يخزن هذا الكائن معلومات حول الجلسة ويوفر طرقًا للاتصال بمخزن البيانات. نظرًا لاختلاف طرق إنشاء الاتصال بين مخازن البيانات، قد لا يدعم كائن الاتصال بعض هذه الطرق لموفر OLE DB معين. يتصل كائن الاتصال بمخزن البيانات باستخدام دالة "Open" الخاصة به، وذلك عبر سلسلة اتصال تحدد الاتصال كقائمة من أزواج المفاتيح والقيم (على سبيل المثال: "Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';"). يجب أن تحدد بداية سلسلة الاتصال نوع اتصال مخزن البيانات الذي يتطلبه كائن الاتصال.
  • موفر OLE DB (على سبيل المثال SQLOLEDB)، باستخدام الصيغة "provider="؛
  • اسم ملف، باستخدام الصيغة "اسم الملف="؛
  • موفر وخادم عن بُعد (انظر RDS)، باستخدام الصيغة "Remote provider=" و "Remote server="؛ أو
  • عنوان URL مطلق، باستخدام الصيغة "URL="
يأمر
بعد أن يُنشئ كائن الاتصال جلسة مع مصدر البيانات، تُرسل التعليمات إلى موفر البيانات عبر كائن الأمر. يستطيع كائن الأمر إرسال استعلامات SQL مباشرةً إلى الموفر باستخدام خاصية CommandText، أو إرسال استعلام مُعَلم أو إجراء مُخزن باستخدام كائن Parameter أو مجموعة Parameters، أو تشغيل استعلام وإرجاع النتائج إلى كائن مجموعة البيانات عبر دالة Execute. توجد عدة دوال أخرى يمكن استخدامها في كائن الأمر، تتعلق بكائنات أخرى، مثل كائنات Stream وRecordSet وConnection.
مجموعة التسجيلات
مجموعة السجلات هي مجموعة من السجلات، ويمكن أن تكون مستمدة من جدول أساسي أو نتيجة استعلام على الجدول. يحتوي كائن مجموعة السجلات على مجموعتين: مجموعة الحقول ومجموعة الخصائص. مجموعة الحقول هي مجموعة من كائنات الحقول، وهي الأعمدة المقابلة في الجدول. أما مجموعة الخصائص فهي مجموعة من كائنات الخصائص، التي تحدد وظيفة معينة لموفر OLE DB. تحتوي مجموعة السجلات على العديد من الطرق والخصائص لفحص البيانات الموجودة بداخلها. يمكن تحديث السجلات في مجموعة السجلات عن طريق تغيير القيم في السجل ثم استدعاء طريقة التحديث أو التحديث المجمع.
مباشر
يتم تأمين مجموعة السجلات باستخدام قفل adLockOptimistic أو adLockPessimistic. ويتم تحديث البيانات في مصدر البيانات بعد تغيير السجل واستدعاء دالة التحديث.
حزمة
يتم تأمين مجموعة السجلات باستخدام adLockBatchOptimistic، وفي كل مرة يتم فيها استدعاء Update، تُحدَّث البيانات في مخزن مؤقت. وأخيرًا، عند استدعاء UpdateBatch، تُحدَّث البيانات بالكامل في مصدر البيانات. تتميز هذه الطريقة بأنها تتم بالكامل في الذاكرة، وفي حال حدوث مشكلة، يتم استدعاء UpdateCancel ولا تُرسَل التحديثات إلى مصدر البيانات.
عملية
إذا سمح موفر OLE DB بذلك، يُمكن استخدام المعاملات. لبدء المعاملة، يستدعي المبرمج دالة BeginTrans ويُجري التحديثات المطلوبة. عند الانتهاء، يستدعي المبرمج دالة CommitTrans. يُمكن استدعاء دالة RollbackTrans لإلغاء أي تغييرات أُجريت داخل المعاملة وإعادة قاعدة البيانات إلى حالتها قبل بدء المعاملة.
سِجِلّ
يمثل هذا الكائن سجلاً واحداً في قاعدة البيانات ويحتوي على مجموعة من الحقول. تتكون مجموعة السجلات (RecordSet) من مجموعة من كائنات السجلات (Record).
تدفق
يُستخدم التدفق، بشكل أساسي في كائن RecordSet، كوسيلة لقراءة وكتابة سلسلة من البايتات. ويُستخدم في الغالب لحفظ مجموعة سجلات بتنسيق XML، ولإرسال أوامر إلى موفر OLE DB كبديل لكائن CommandText، ولتضمين محتويات ملف ثنائي أو نصي.
المعلمة
المعلمة هي وسيلة لتغيير سلوك جزء مشترك من الوظائف، على سبيل المثال قد يتم تمرير معلمات مختلفة إلى إجراء مخزن اعتمادًا على ما يجب القيام به؛ وتسمى هذه الأوامر المعلمة.
مجال
يحتوي كل كائن سجل على العديد من الحقول، ويحتوي كائن مجموعة السجلات أيضًا على كائن حقل مطابق. يتوافق كائن الحقل الخاص بكائن مجموعة السجلات مع عمود في جدول قاعدة البيانات الذي يشير إليه.
ملكية
هذا الكائن خاص بمزود OLE DB ويحدد إحدى وظائفه. يمكن أن يكون كائن الخاصية إما خاصية مضمنة - وهي خاصية محددة مسبقًا ومطبقة بواسطة ADO، وبالتالي لا يمكن تغييرها - أو خاصية ديناميكية - يحددها مزود البيانات الأساسي ويمكن تغييرها.
خطأ
عند حدوث خطأ في موفر OLE DB أثناء استخدام ADO، يتم إنشاء كائن خطأ في مجموعة الأخطاء. أما الأخطاء الأخرى فلا تُخزَّن في كائن خطأ. على سبيل المثال، تُخزَّن أي أخطاء تحدث عند معالجة البيانات في كائن RecordSet أو Field في خاصية الحالة.

الاستخدام الأساسي

هناك بعض الخطوات الأساسية المطلوبة للوصول إلى البيانات ومعالجتها باستخدام ADO  :

  1. قم بإنشاء كائن اتصال للاتصال بقاعدة البيانات.
  2. قم بإنشاء كائن مجموعة سجلات لاستقبال البيانات.
  3. افتح الاتصال
  4. قم بتعبئة مجموعة السجلات عن طريق فتحها وتمرير اسم الجدول المطلوب أو عبارة SQL كمعامل لوظيفة الفتح .
  5. قم بإجراء جميع عمليات البحث/المعالجة المطلوبة على البيانات التي تم جلبها.
  6. قم بتطبيق التغييرات التي أجريتها على البيانات (إن وجدت) باستخدام طرق التحديث أو التحديث المجمع .
  7. أغلق مجموعة السجلات
  8. أغلق الاتصال

مثال ASP

إليك مثال ASP باستخدام ADO لتحديد حقل "الاسم" من جدول يسمى "دليل الهاتف"، حيث كان "رقم الهاتف" يساوي "555-5555".

dim myconnection , myrecordset , name; set myconnection = server.createobject ( "ADODB.Connection" ) ; set myrecordset = server.createobject ( " ADODB.Recordset " ) ;myconnection.open mydatasource myrecordset.open " Phonebook " , myconnection myrecordset.find " PhoneNumber = ' 555-5555 ' " name = myrecordset.fields.item ( " Name " ) myrecordset.closeset myrecordset = nothing set myconnection = nothing

هذا يعادل كود ASP التالي، الذي يستخدم لغة SQL العادية بدلاً من وظائف كائن Recordset:

dim myconnection , myrecordset , name set myconnection = server.createobject ( " ADODB.connection" ) myconnection.open mydatasource set myrecordset = myconnection.execute ( " SELECT Name FROM Phonebook WHERE PhoneNumber = '555-5555 ' " ) name = myrecordset ( 0 )

دعم البرامج

يدعم ADO جميع لغات البرمجة التي تدعم الربط بواجهات COM الثنائية. تشمل هذه اللغات ASP و Delphi و PowerBuilder و Visual Basic for Applications (VBA). وقد أُضيف دعم ADO الآن إلى dBase Plus 8 (مع ADO).

إرث

حلّت ADO.NET محل ADO بنفس الطريقة التي حلّت بها C#/.NET محل C/Win32 كنمط أساسي لتطوير تطبيقات ويندوز. تتبع ADO.NET نفس نمط تصميم ADO، مما يُسهّل على مطوري ADO الانتقال إلى إطار عمل .NET.

انظر أيضاً

مراجع