قواعد البيانات في دلفي : DataBases In Delphi

الموضوع في 'منتدى الإعلام الآلي' بواسطة طالب جزائري, بتاريخ ‏21 ديسمبر 2007.

  1. طالب جزائري

    طالب جزائري الإدارة طاقم الإدارة



    إن دعم دلفي اللامحدود لقواعد البيانات يعتبر من أهم سمات هذة اللغة , ومنذ بدايات دلفي أخذت سيطا واسع الإنتشار عن قوة دعمها لقواعد البيانات .

    سوف نتكلم في هذة المقالة عن دعم دلفي الواسع لقواعد البيانات ..

    الوصول إلى قاعدة البيانات لمحة تاريخية :

    Accessing a Database: BDE, dbExpress, and Other Alternatives



    في بدايات دلفي كان الدعم الوحيد لقواعد البيانات من خلال محرك قواعد بيانات بورلاند BDE (Borland DataBase Engine) ,

    ومنذ دلفي 3 توسع شريط أدوات دلفي المتعلق بقواعد البيانات ليشمل كمية أكبر وأفضل من الأدوات التحكمية , .

    دلفي 5 شهدت بدايات دعم الـADO (Microsoft Active X Data Object ) وكذلك الـ IBX (InterBase Express )

    دلفي 6 أضافت DBExpress إلى القائمة , والذي هو أداة جديدة تدعم تعدد_المنصات ومكونات دخول إلى قواعد البيانات تتسم بالإستقلال والمحمولية , تم تطويرها من قبل بورلاند وهي مرفقة مع كايلكس على لينكس ودلفي على ويندوز .



    محرك قواعد بيانات بورلاند : Borland Database Engine (BDE)

    تم إنشاء ال BDE مع جداول البارادوكس , حتى قبل أن تكون دلفي قد وجدت بعد . ثم قامت بورلاند بتوسيعة لاحقا ليدعم قواعد بيانات محلية أخرى والعديد من مخدمات الـ SQL (SQL Servers) كذلك ,

    يستطيع BDE تأمين دخول مباشر إلى dBASE,Paradox,ASCII,FoxPro, وجداول Access .

    وكذلك لة مجموعة من المشغلات (Drivers) تسمى Sql Links وهي متاحة فقط على النسخة Delphi Enterprise تسمح بالدخول إلى بعض مخدمات الSQL , مثل Oracle,Sybase,Microsoft,Informix,InterBase, DB2 servers.

    وإذا أردت الدخول إلى قاعدة بيانات أخرى غير متوفرة فإن الBDE يستطيع التعامل مع مشغلات الـ ODBC أيضا .



    الميزة الخاصة لإستخدام الـ BDE أن هذة التقنية مدمجة ومضمنة بشكل جيد جدا في دلفي , وعناصرة مدعومة بشكل جيد بالشرح والمساعدة في دلفي , وهو الحل الحيوي الأساسي للدخول إلى قواعد بيانات محلية مثل Paradox و Dbase
    وسيئات هذا الخيار أن بورلاند قد أوقفت دعمة وتطويرة , ولن يتوفر لة تحديثات مستقبلية فيما بعد ,
    كما أنك بحاجة إلى تنصيبة وإعدادة على جهاز الزبون ,

    وهو محرك ثقيل الوزن يتطلب الكثير من ملفات التنصيب ومتطلبات الذاكرة , وهو متاح فقط على ويندوز ,.

    إذا كنت قد بنيت تطبيقات قواعد بيانات محلية بإستخدامة , فلا توجد حاجة للضيق ذرعا بة ومحاولة تبديلة مبكرا مالم تكن تفكر بنقل تطبيقاتك إلى لينكس , أو تتوقع تبديل قواعد بيانات مستقبلا بنوع غير معروف الآن .

    أما إذا كنت تستخدم مخدم Sql فإني أرى النقل إلى تقنية ربط أخرى خيارا واردا , حسب حاجاتك وتوقعاتك .

    يوجد ثلاث أنواع من عناصر الـ DataSet في BDE هيTable و Queryو StoredProc بالإضافة إلى UpdateSQL المستخدمة بالإتصال مع عنصر الQuery .

    المكونان DataBase و Session يستخدمان لإعداد الإتصال مع قاعدة البيانات , والعنصر BatchMove يستخدم من أجل نسخ البيانات , .



    المكون ADO : ActiveX Data Objects :

    ADO وهو إختصار للعبارة ActiveX Data Objects هو واجهة عالية المستوى من مايكروسوفت من أجل الوصول (دخول) قواعد البيانات , ينفذ ADO على تقنية Microsoft ’s data-access OLE DB والذي يسمح بالوصول إلى قواعد البيانات العلائقية وغير العلائقية كذلك البريد الإلكتروني ونظم الملفات وبعض الأغراض الأخرى .

    يملك محرك ADO خصائص ومميزات مشابهه لل BDE حيث

    يدعم قواعد البيانات المحلية ومخدمات الـ SQL كذلك , وهو أيضا محرك ثقيل الوزن حقيقي مثل BDE , تتصف إعداداتة بإنها بسيطة وسهلة (لإنة ليس مركزيا) ,كما أن التنصيب من الناحية النظرية ليس مهما (!..)

    الجميل أن هذا المحرك يأتي مضمنا مع الإصدارات الحالية (الحديثة) من النظام ويندوز .....

    ولكن لتعلم على كل حال أن التوافقية المحدودة بين الإصدارات المختلفة للـ ADO مع نفسة سوف تجبرك على تحديث أجهزة المستخدمين ليملكو نفس إصدارة الADO التي إستخدمتها لتطوير البرنامج ونفس الحجم من MDAC (Microsoft Data Access Components) والذي سوف يحدث جزء كبير من نظام التشغيل مما يجعل هذة العملية بعيدة عن البساطة والسهولة ... .

    ببساطة ADO ليس متوافقا مع نفسة ومع إصداراتة اللاحقة ., وهذا حال مايكروسوفت دومــا ...

    إن إستخدام ADO مع Access أو SQLServer يؤمن بلا شك بعض الميزات الإضافية , لإنها مشغلات مايكروسوفت تعمل على قواعد بيانات مايكروسوفت, يعني بالعامية منقول أهلية بمحلية , لذلك توقع أداء متماسكا في هذة الحالة .

    إن إستخدام ADO من أجل Access يعتبر حلا جيدا , ولكن إذا كنت تخطط لإستخدام مخدم SQL آخر أولا عليك التأكد من توافر مشغلات جيدة لة (Drivers) – ربما تظهر لك بعض المفاجأات ..

    ADO قوي تماما , ولكن عليك أن تتأقلم معه جيدا ... , إنة موجود فعليا بين تطبيقك وقاعدة البيانات .

    ومن الجانب المضاد : لا تستخدم ADO إذا كنت تفكر بالتطوير متعدد-المنصات لإن هذة التقنية الخاصة بمايكروسوفت غير متوفرة من أجل نظام تشغيل آخر .

    بإختصار . إستخدم ADO إذا كنت تخطط للعمل فقط على ويندوز وتريد إستخدام Access أو قواعد بيانات مايكروسوفت أخرى , أو أنك عثرت على مزود OLE DB جيد من أجل قاعدة البيانات التي تخطط لإستخدامها , .



    مكتبة الـ dbExpress : The dbExpress Library

    إحدى خصائص النسخة السادسة6من دلفي هي بداية مكتبة قواعدبيانات DBExpress من أجل منصة الويندوز .

    أنا أقول مكتبة لإنة وعلى عكس الـ BDE والـ ADO فإن DBExpress يعتبر خفيف الحجم تماما , وأضع خطا تحت ويندوز لإن نفس المكتبة متوفرة على لينكس من أجل كايلكس Kylix .

    أن أهم ميزتين في DBExpress هي أن يكون خفيفا ومحمولا (سهل التنقل) . وهما السبب الكامن وراء إنتاجة من شركة بورلاند .

    وأهم مايميزة بالتالي هو أنة وبشكل أساسي لا يحتاج إلى أي إعدادات على جهاز الزبون .....

    وبالمقارنة مع البقية فإن DBExpress محدود بالقدرات , فهولايستطيع الدخول إلا على مخدمات الـSQL , (وبالتالي لاقواعد بيانات محلية .....) كما أنة لايملك مقدرات التخزين المؤقت (no caching capabilities) , ويؤمن فقط الإتصال غير الموجة مع البيانات ...

    كنظرة أولى ربما تظن أن هذة الأداة عديمة النفع وغير جيدة ... ؟؟؟

    وبالمقابل هذة هي الميزات التي جعلتها ومميزة وقويه :

    الإتصال غير الموجة مع البيانات وبدون أي تحديث موجة هو الحالة المعيارية في حال كنت تريد خدمات طباعة التقارير وتوليد ملفات html , أو إظهار محتويات قاعدة البيانات .

    إذا كنت تريد بناء واجهات مستخدم لتعديل البيانات بدلا من ذلك , تذكر بإن دلفي تملك أدوات خاصة (ClientDataSet ) والتي تؤمن حلول الإستعلامات والتخزين المؤقت.. (caching and query resolution.) . فإذا دمجت DBExpress معها فإنك ستحصل على أداء رائع ومتفوق ,

    هذة المكونات تسمح لتطبيقك المبني على DBExpress بإمتلاك تحكم أكثر بكثيرمن بإستخدام محرك قواعد بيانات منفصل. والذي يقوم بأمور إضافية لك , لكنة يقوم بة بالطريقة التي يريدها هو وليست الطريقة التي تريدها أنت .

    لاتنسى أن DBExpress لايسمح لك بالخطأ ويجبرك على إتخاذ حلول سريعة وقويه .

    ومن المهم جدا أن تفكر بإن بورلاند قد نشرت هذة المكتبة , وهي الخيار الحيوي الوحيد المتاح من أجل لينكس , وقد أوقفت بورلاند تطوير BDE وتطور DBExpress بدلا عنة ,, ذلك فإن المستقبل لها ولن تتوقف بورلاند عن دعمها في المدى القريب وسوف تستمر بتحديثها . لذلك فإن التفكير في الDBExpress كحل في البرامج هو رأي سديد , وكذلك التفكير في تحديث برامج قواعد بيانات أخرى إلى هذة البنية الجديدة DBExpress ...



    محرك إنتربيز InterBase Express (IBX) :

    إن إنتربيز سيرفر هو منتج بورلاند مفتوح- المصدر ... والأجمل أنة مجاني كذلك ,...

    على عكس BDE و ADO و DBExpress فإنExpress InterBase ليس محرك مخدم قواعد بيانات مستقل , وإنما تقنية من أجل دخول مخدم قواعد بيانات محدد (وهو InterBase) , فإذا كنت تخطط لإستخدام InterBase فقط كنظام إدارة قواعد بياناتك العلائقية (your back-end RDBMS,) فإن إستخدام هذة المجموعة من العناصر سوف تمنحك التحكم الأعلى لهذا المخدم , وتقدم الأداء الأفضل , وتسمح لك كذلك بالتحكم والمحافظة على المخدم من خلال تطبيق زبون عادي .....

    ملاحظة : إن إستخدام InterBaseExpress يلقي الضوء على إستخدام عناصر مخصصة للإتصال بنوع محدد من قواعد البيانات , والتي هي متوفرة من أجل العديد من الأنواع مثل Oracle, Access, dBase والعديد ...

    وبإختصار فإنك تستطيع إستخدام InterBaseExpress إذا كنت متأكدا أنك لن تغير نوع قاعدة بياناتك في المستقبل , وتريد تحقيق الأداء الأعلى والتحكم الأفضل على حساب الإستقرارية والمحمولية ...

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



    العنصر ClientDataSet :

    وأخيرا يوجد عنصر مشتق من TdataSet والذي يملك سلوك خاص ويمكن دمجة مع أدوات وصول لقواعد بيانات أخرى

    في الحقيقة إن عنصر الـ ClientDataSet يستخدم للدخول إلى بيانات مخزنة بالذاكرة , البيانات المخزنة بالذاكرة هي بيانات مؤقتة بشكل كامل , وسوف تفقد عندما تقوم بإغلاق برنامجك . يمكن حفظها إلى ملف محلي وتوريدها إلى عنصر إتصال آخر ..

    ماأريد قوله أن إستخدام ClientDataSet لوحدة غير مناسب إلا للمشاريع الصغيرة (يحمل كل السجلات إلى الذاكرة دفعة واحدة) مع أنه يعتبر أكثر عنصر قواعد بيانات يملك دوال تحكم والميزات الموجودة فيه أفضل من غيرة وغير موجودة في BDE أو ADO ..... ولكن يمكن كما أتفقنا أن ندمجه مع جداول DbExpress عن طريق مزود Provider مرفق مع DbExpress يقوم بكل العمل عوضا عنك . وبهذه الطريقة نكون قد أستفدنا من كل ميزات ClientDataSet ونحن نعمل على ملفات مؤقته على جهازنا , وعند الحاجة نقوم بإرسال هذة الملفات دفعة واحدة أو عند كل حفظ أو حذف إلى السيرفر وبالتالي الإستفادة من كل ميزات DbExpress كذلك .
     
  2. adnane

    adnane عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    merci beaucoup mon frere
     
  3. biomak

    biomak عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    الرجاء التوسع اكثر في برمجة او دعم لغة الدالفي لقواعد البيانات بارك الله فيكم و جزاكم عنا خير الجزاء
     
  4. رد: قواعد البيانات في دلفي : DataBases In Delphi

    شكراااااااااااااااا​
     
  5. Bachirsoft

    Bachirsoft عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    شكراااااااااااااااا
     
  6. getsource

    getsource عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    ممكن درس في المرة القادمة عن كيفية ربط دلفي بقاعدة بيانات mysql
    وكيفية توزيع البرنامج
     
  7. idris

    idris عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    مشكور
    ربي يحفصك
     
  8. siham-gh

    siham-gh عضو مميز

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    بورك فيك....................
     
  9. المهلهل

    المهلهل عضو مميز

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    شكرا لك اخي الكريم
     
  10. Kami19

    Kami19 عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    مشكوووووور اخي
     
  11. مصطفى أمين

    مصطفى أمين عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    الدلفي جميل، لكني من محبي VB.NET


     
  12. ali-radio

    ali-radio عضو جديد

    رد: قواعد البيانات في دلفي : DataBases In Delphi

    merci pour ce cour