في تطبيق قاعدة بيانات DELPHI، لدينا عادةً طريقتان للوصول إلى قاعدة البيانات. الأول هو البحث في قاعدة بيانات BDE المحرك، أي استخدام برنامج تشغيل قاعدة البيانات الذي يأتي مع DELPHI. وميزة هذه الطريقة هي أنها سريعة، ولكن نطاق تطبيقها محدود. عند تحديث إصدار قاعدة البيانات، قد لا يتمكن من تشغيل قاعدة البيانات الجديدة؛ وهناك طريقة أخرى وهي من خلال ODBC، والتي تتمتع بالمزايا النقطة المهمة هي أنه يمكن تزويده بنظام التشغيل (مثل WINDOWS) ويمكن تكييفه مع مجموعة متنوعة من قواعد البيانات كواجهة قياسية. والعيب هو أنه بطيء. قيد التحضير خلال هذه العملية، يمكننا اختيار إحدى الطرق وفقًا لاحتياجاتنا. عند استخدام ODBC للوصول إلى قاعدة البيانات، فإن الطريقة المعتادة هي إعداد مصدر بيانات نظام ODBC في لوحة إدارة ODBC. (System DSN)، ثم قم بتعيين اسم مستعار لقاعدة البيانات (Alias) في DBD أو في البرنامج ليتوافق مع DSN، بحيث يمكنك استخدامه يمكن تشغيل قاعدة البيانات بسهولة. أعتقد أن المبرمجين الذين استخدموا DELPHI للقيام بتطبيقات قواعد البيانات هم بالفعل على دراية بهذا الجانب، ولا أعرف الكثير منهم. قال. في التطبيقات العملية، واجه المؤلف مثل هذا الموقف. يعتمد تطبيق قاعدة البيانات لدينا على مصدر بيانات نظام ODBC. ظل البرنامج التطبيقي الذي يصل إلى قاعدة البيانات ويقوم بتشغيلها يعمل بشكل جيد حتى يوم واحد، ظهر شخص على دراية بنظام WINDOWS ولكن ليس على دراية به يقوم المستخدمون الأذكياء جدًا بتعديل أو حذف نظام DSN الخاص بنا عن طريق الخطأ... لذلك، بدأ المؤلف في دراسة كيفية ضبط محتوى نظام ODBC DSN ديناميكيًا في البرنامج، حتى أتمكن من زيادة برنامجي الخاص. النظام متين. بعد يوم كامل من البحث في سجل WINDOWS، وجدت أخيرًا سر إعداد DSN مع مدير ODBC. ("هناك عدل في السماء والأرض، وسوف تكافأ دائمًا على جهودك!" هذا ليس إعلانًا!) أكتبه لمشاركته مع الجميع، كما أطلب النصيحة من الخبراء. سر إعداد DSN بواسطة برنامج إدارة ODBC موجود في السجل. إذا كنت لا تصدق ذلك، يمكنك الانتقال إلى HKEY_LOCAL_MACHINE/Software/ODBC. ألقِ نظرة، بالتأكيد ستجعلك تشعر أنك قد حققت نصف النجاح بالفعل. أولاً، دعونا نلقي نظرة على برنامج تشغيل قاعدة بيانات ODBC المثبت في النظام. في HKEY_LOCAL_MACHINE/البرمجيات/ODBC/ يقوم ODBInst.INI بتخزين معلومات حول برنامج تشغيل قاعدة بيانات ODBC المثبت ومن هنا يمكنك التحقق من رقم ODBC المثبت. معلومات مثل ملف DLL المطابق لبرنامج تشغيل قاعدة البيانات. في كل قيمة مفتاح لبرامج تشغيل ODBInst.INI/ODBC، يكون اسم المفتاح هو برنامج التشغيل الاسم (مثل Microsoft Access Driver (*.mdb)) وقيمة المفتاح هي "مثبت"، مما يشير إلى أنه تم تثبيت برنامج التشغيل. يخرج ODBInst.INI/DriverName (اسم السائق هو اسم برنامج التشغيل، مثل Microsoft Access Driver (*.mdb)) ، هناك معلومات مفصلة حول برنامج التشغيل، نحصل بشكل أساسي على المسار واسم الملف لملف DLL المطابق لبرنامج تشغيل ODBC من هنا القيمة الأساسية لاسم المفتاح Driver هي بشكل عام "C:/WINDOWS/SYSTEM/FileName.DLL". ثم انظر إلى معلومات التسجيل الخاصة بنظام DSN في HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI، حيث يتم تخزين النظام. معلومات تسجيل DSN ومعلمات DSN التي قمنا بتعيينها في لوحة إدارة ODBC موجودة هنا. دعونا نلقي نظرة على خطوات إنشاء DSN لنظام ODBC، أي بعد إكمال إعدادات المعلمة في لوحة إدارة ODBC، إدارة ODBC كيف يقوم البرنامج بتسجيل معلومات DSN في السجل؟ خذ إنشاء نظام DSN من نوع Ms Access97 المسمى MyAccess كمثال. تتضمن المعلمات التي نحددها بشكل أساسي نوع قاعدة البيانات (Microsoft Access Driver (*.mdb))، واسم مصدر البيانات (MyAccess)، وصف مصدر البيانات (My ACCESS)، ومسار قاعدة البيانات (C:/Inetpub/wwwroot/Test.mdb)، ومعلمات أخرى مثل اسم المستخدم، كلمة مرور المستخدم، قاعدة بيانات النظام الحصرية، للقراءة فقط، الدليل الافتراضي، حجم المخزن المؤقت، عدد خطوط المسح، مهلة الصفحة، وما إلى ذلك. استخدم النظام المعلمات الافتراضية. في هذا الوقت، يجب أن يتضمن نظام التسجيل DSN بشكل عام الخطوات التالية: 1. إضافة مفتاح سلسلة في مصادر بيانات HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/ODBC القيمة هي MyAccess = Microsoft Access Driver(*.mdb)، حيث يوجد اسم مصدر البيانات ونوع قاعدة البيانات على التوالي. هذا لتسجيل اسم DSN للنظام في التسجيل. 2. قم بإنشاء مفتاح فرعي (مفتاح فرعي) MyAccess في HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI، أي إنشاء قم بإنشاء مفتاح كـ HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/MyAccess، ثم قم بإنشاء بعض القيمة الأساسية، التي تصف معلومات تكوين نظام DSN بالتفصيل. المعلومات الرئيسية هي (المحتوى الموجود في [] هو تعليق المؤلف): DBQ=C:/Inetpub/wwwroot/Test.mdb [سلسلة تشير إلى مسار قاعدة البيانات] الوصف=وصولي [سلسلة، تمثل وصف قاعدة البيانات] Driver=C:/PWIN98/System/odbcjt32.dll [سلسلة، تشير إلى برنامج التشغيل، ODBCINST.INI مرئي] DriverId=0x00000019(25) [لا يمكن تغيير الرقم الذي يشير إلى تعريف برنامج التشغيل] FIL=Ms Access [سلسلة، قد تكون مرتبطة بالتصفية] SafeTransaction=0x00000000 [الرقم، قد يشير إلى عدد عمليات المعاملات المدعومة] UID = "" [سلسلة تشير إلى اسم المستخدم، وهنا سلسلة فارغة] 3. إنشاء محركات فرعية (مفتاح فرعي) في HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/MyAccess، ثم قم بإنشاء مفتاح فرعي (SubKey)Jet تحته، أي إنشاء مفتاح باسم HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/MyAccess/Engines/Jet وقم بإنشاء البعض تحته القيمة الأساسية، التي تصف بالتفصيل معلومات تكوين محرك قاعدة البيانات لنظام DSN. المعلومات الرئيسية هي كما يلي (المحتوى الموجود في [] هو تعليق المؤلف): ImplicitCommitSync=Yes [سلسلة، قد تشير إلى ما إذا كانت تعديلات البيانات ستنعكس فورًا] MaxBufferSize=0x00000200(512) [الرقم الذي يشير إلى حجم المخزن المؤقت] PageTimeout=0x00000005(5) [الرقم الذي يشير إلى مهلة الصفحة] المواضيع=0x00000003(3) [الرقم، ربما يشير إلى الحد الأقصى لعدد المواضيع المدعومة] UserCommitSync=Yes [سلسلة، قد تشير إلى ما إذا كانت تعديلات البيانات ستنعكس فورًا على المستخدم] ما ورد أعلاه هو المعلومات الأساسية لإنشاء نظام DSN (يتم أيضًا تعيين معلومات أخرى مثل الخيارات أو الخيارات المتقدمة هنا، ولكن نظرًا لأن الإعداد الافتراضي المعلومات غير المدرجة في السجل)، نقوم بتشغيل السجل وفقًا للخطوات المذكورة أعلاه في البرنامج، ويمكننا أيضًا إضافة DSN للنظام أو تعديل تكوينه. في البرنامج النموذجي التالي، سيتم إنشاء DSN للنظام وفقًا للخطوات المذكورة أعلاه، يرجى الانتباه إلى التعليقات الموجودة في البرنامج. {*************************************************************************************************************************************************************************** * *** في هذا الإجراء، سيتم إنشاء مصدر بيانات نظام ODBC (DSN)، اسم مصدر البيانات: MyAccess وصف مصدر البيانات: مصدر البيانات الجديد نوع قاعدة البيانات:ACCESS97 قاعدة البيانات المقابلة: C:/Inetpub/wwwroot/test.mdb *************************************************************************************************************************************************************************** * *****} {لاحظ أنه يجب تضمين التسجيل في بيان الاستخدامات} الإجراء TForm1.Button1Click(Sender: TObject); فار تسجيل درجة الحرارة: TRegistry؛ bData: صفيف [0..0] من البايت؛ يبدأ RegisterTemp := TRegistry.Create; // إنشاء مثيل التسجيل مع ريجيستريتميب القيام به يبدأ RootKey:=HKEY_LOCAL_MACHINE;// قم بتعيين قيمة مفتاح الجذر على HKEY_LOCAL_MACHINE // ابحث عن مصادر بيانات البرامج/ODBC/ODBC.INI/ODBC إذا كان OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) فحينئذٍ ابدأ // سجل اسم DSN WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' ); نهاية آخر ابدأ//فشل في إنشاء القيمة الأساسية memo1.lines.add('فشل في إضافة مصدر بيانات ODBC'); مخرج؛ نهاية؛ CloseKey; // ابحث عن Software/ODBC/ODBC.INI/MyAccess أو أنشئه واكتب معلومات تكوين DSN إذا كان OpenKey('Software/ODBC/ODBC.INI/MyAccess',True) فحينئذٍ يبدأ WriteString( 'DBQ', 'C:/inetpub/wwwroot/test.mdb' );//دليل قاعدة البيانات WriteString( 'Description', 'My new data source' );// وصف مصدر البيانات WriteString( 'Driver', 'C:/PWIN98/SYSTEM/odbcjt32.dll' );// ملف DLL لبرنامج التشغيل WriteInteger( 'DriverId', 25 );//معرف برنامج التشغيل WriteString( 'FIL', 'Ms Access;' );// أساس التصفية WriteInteger( 'SafeTransaction', 0 );// عدد عمليات المعاملات المدعومة WriteString( 'UID', '' );// اسم المستخدم bData[0] := 0; WriteBinaryData('Exclusive', bData, 1 );// الوضع غير الحصري WriteBinaryData('ReadOnly', bData, 1 );//وضع غير للقراءة فقط نهاية آخر // فشل في إنشاء قيمة أساسية يبدأ memo1.lines.add('فشل في إضافة مصدر بيانات ODBC'); مخرج؛ نهاية؛ CloseKey; // ابحث عن Software/ODBC/ODBC.INI/MyAccess/Engines/Jet // اكتب معلومات تكوين محرك قاعدة بيانات DSN إذا كان OpenKey('Software/ODBC/ODBC.INI/MyAccess/Engines/Jet',True) فحينئذٍ يبدأ WriteString( 'ImplicitCommitSync', 'Yes' ); WriteInteger( 'MaxBufferSize', 512 );// حجم المخزن المؤقت WriteInteger( 'PageTimeout', 10 ); //مهلة الصفحة WriteInteger( 'Threads', 3 );// عدد المواضيع المدعومة WriteString( 'UserCommitSync', 'Yes' ); نهاية آخر // فشل في إنشاء قيمة أساسية يبدأ memo1.lines.add('فشل في إضافة مصدر بيانات ODBC'); مخرج؛ نهاية؛ CloseKey; memo1.lines.add('أضفت مصدر بيانات ODBC الجديد بنجاح'); حر؛ نهاية؛ نهاية؛ تم تصحيح أخطاء البرنامج أعلاه وتمريره ضمن PWIN98+DELPHI3.0. فيما يلي المعلومات التي يجب تعيينها لإنشاء DSN لأنواع قواعد البيانات الشائعة ([] هو محتوى التعليق، باستثناء التعليقات الخاصة، يمكن رؤية كل معلمة في الوصف السابق): 1. الوصول (برنامج تشغيل Microsoft Access (*.mdb)) DBQ، الوصف، برنامج التشغيل [odbcjt32.dll]، معرف السائق [25]، FIL [Ms Access؛]، المعاملات الآمنة [الافتراضي هو 0]، UID [الافتراضي فارغ]، المحركات/Jet/ImplicitCommitSync[الافتراضي هو نعم]، المحركات/Jet/MaxBufferSize[الافتراضي 512]، المحركات/Jet/PageTimeout [الافتراضي هو 512]، المحركات/Jet/الخيوط [الافتراضي هو 3]، المحركات/Jet/UserCommitSync [الافتراضي هو نعم] الإعدادات الاختيارية: SystemDb[سلسلة، المسار إلى قاعدة بيانات النظام]، ReadOnly[ثنائي، ما إذا كان سيتم فتحه في وضع القراءة فقط، 1 يعني نعم، الافتراضي هو 0]، حصري[ثنائي، ما إذا كان سيتم فتحه في الوضع الحصري، 1 يعني نعم، الافتراضي هو 0]، الأشخاص ذوي الإعاقة [سلسلة، كلمة مرور المستخدم] 2. Excel (برنامج تشغيل Microsoft Excel (*.xls)) DBQ[Excel97(=المسار/xxx.xls)، 5.0/7.0(=المسار/xxx.xls)، 4.0(=المسار)، 3.0(=المسار)]، الوصف، برنامج التشغيل[odbcjt32.dll]، DefaultDir[Excel97(<>DBQ),5.0/7.0(<>DBQ),4.0(=DBQ),3.0(=DBQ)], معرف السائق[790(Excel97)، 22(5.0/7.0)، 278(4.0)، 534(3.0)]، FIL[Excel5.0;]، للقراءة فقط، SafeTransaction، UID، المحركات/Excel/ImplicitCommitSync، المحركات/Excel/MaxScanRows[الرقم، عدد الصفوف الممسوحة ضوئيًا، الافتراضي هو 8]، المحركات/Excel/الخيوط、المحركات/Excel/UserCommitSync、 Engines/Excel/FirstRowHasName[ثنائي، سواء كان الصف الأول هو اسم المجال، 1 يعني نعم، الافتراضي هو 1] ملاحظة: يتوافق DBQ الخاص بـ Excel97 وExcel7.0/5.0 مع ملف XLS، بينما يتوافق Excel4.0 وExcel3.0 مع دليل؛ يتوافق DefaultDir مع الدليل، وهو المسار المطابق لـ DBQ في Excel97 وExcel7.0/5.0. وهو نفس DBQ ضمن Excel4.0 وExcel3.0؛ ويختلف معرف السائق لكل إصدار. 3. dBase (برنامج تشغيل Microsoft dBase (*.dbf)) DefaultDir[سلسلة، الدليل حيث يوجد ملف قاعدة البيانات]، الوصف، برنامج التشغيل[odbcjt32.dll]، معرف السائق[277(IV)، 533(5.0)]، FIL[dbase III;]، SafeTransaction، UID، محركات/Xbase/ImplicitCommitSync، المحركات/Xbase/Collating[سلسلة، أساس الفرز، يمكن أن يكون ASCII، دولي، نرويجي-دانماركي، السويدية-الفنلندية]، المحركات/Xbase/Deleted[ثنائي، ما إذا كان سيتم عرض السجلات المحذوفة بشكل بسيط، 0 يعني العرض، الافتراضي هو 1]، محركات/Xbase/PageTimeout [الافتراضي هو 600]، محركات/Xbase/UserCommitSync، المحركات/Xbase/الخيوط، المحركات/Xbase/الإحصائيات [ثنائي، ما إذا كان سيتم استخدام العدد التقريبي للأسطر، 1 يعني نعم، الافتراضي 0] ملحوظة: (يختلف معرف برنامج التشغيل الخاص بإصداري dBaseIV وdBase5.0) 4. Foxpro (برنامج تشغيل Microsoft Foxpro (*.dbf)) DefaultDir [الدليل الذي يوجد به ملف قاعدة البيانات]، الوصف، برنامج التشغيل [odbcjt32.dll]، معرف السائق[536(2.6)، 280(2.5)]، FIL[Foxpro 2.0;]، SafeTransaction، UID، المحركات/Xbase/الترتيب [سلسلة، أساس الفرز، يمكن أن يكون ASCII، دولي]، المحركات/Xbase/Deleted[ثنائي، ما إذا كان سيتم عرض السجلات المحذوفة بشكل بسيط، 0 يعني العرض، الافتراضي هو 1]، محركات/Xbase/PageTimeout [الافتراضي هو 600]، محركات/Xbase/UserCommitSync، المحركات/Xbase/الخيوط، المحركات/Xbase/الإحصائيات [ثنائي، ما إذا كان سيتم استخدام العدد التقريبي للأسطر، 1 يعني نعم، الافتراضي 0] ملاحظة: (معرف برنامج التشغيل الخاص بـ Foxpro2.5 وFoxpro2.6 مختلفان) قم بتحويل البرنامج أعلاه إلى عنصر تحكم COM أو ActiveX، والذي يمكن استخدامه في العديد من لغات البرمجة عالية المستوى مثل DELPHI وC++Buider وVB وVC وPB. |