![]() |
س و ج | قائمة الأعضاء | الروزناما | العاب و تسالي | مواضيع اليوم | بحبشة و نكوشة |
![]() ![]() |
|
أدوات الموضوع |
![]() |
#1 | ||||||
مشرف متقاعد
|
![]() كيف نتعامل مع كلمة السر في ملفات اكسيس
كما نعرف، بالنسبة ل ADO يجب تحديد صيغة التوصيل Connection String التي تتضمّن خصائصا مثل وسيط محرك قواعد البيانات و اسم قاعدة البيانات نفسها ثم أية خصائص أخرى تكون لازمة للربط مع قاعدة البيانات و فتحها مثل كلمة السرّ إذا كانت مطلوبة. اذا افترضنا ان لدينا مكوّن ADOConnection1 ، فاننا عادة ما نأتي الى خاصّية ConnectionString لبناء جملة أو صيغة التوصيل من خلال نافذة Data Link Propertis . بالنسبة لقاعدة بيانات اكسيس عادة ما يكون الوسيط أو المقدّم provider لمحرك قاعدة البيانات هو: Microsoft.Jet.OLEDB.4.0 Provider، ثم نقوم بتحديد مكان و اسم قاعدة البيانات الذي سنفترض انها : C:\Db.mdb كما هو موضح في الشكل التالي. نفترض ان اسم المستخدم هو الاسم الافتراضي الذي يعطى عند تكوين قاعدة بيانات اكسيس ، و الذي يظهر آليا في النافذة. الآن نأتي لكلمة السرّ. لو كانت قاعدة البيانات خالية من كلمة سرّ فان صيغة التوصيل تكون قد اكتملت عند هذا الحدّ ، و يمكن التأكّد من ذلك من خلال الضغط على زرّ اختبار التوصيل Test Connection. أما لو كان لقاعدة البيانات كلمة سرّ فان الاختبار سيفشل معلنا عن عدم صلاحية كلمة السرّ. لتحديد كلمة السرّ في صيغة التوصيل - وعكس ما هو متوقع - لن نحددّها في خانة Password في نفس الصفحة، بل نتركها كما هي و ننتقل الى صفحة All و التي بها كافة الخصائص التي يمكن توصيفها لصيغة التوصيل. في هذه الصفحة سنجد الخاصية: Jet OLEDB ![]() بعد تحديد كلمة السرّ، يمكننا العودة الى صفحة Connection و اعادة اختبار التوصيل. ثم الموافقة على صيغة التوصيل التي تمّ بناؤها و العودة الى نافذة الخصائص في دلفي. سنلاحظ أن جملة التوصيل تم وضعها أمام خاصية ConnectionString . التعامل مع كلمة السر داخل التوليف: أحيانا قد تحتاج الى تحديد جملة التوصيل بكاملها أو احدى أو بعض خصائصها أثناء تشفيل البرنامج و ليس عند التصميم، كأن تريد أن تلتقط مسار و اسم قاعدة البيانات من ملف خارجي، أو أن تتحصلّ على اسم المستخدم أو كلمة السر من المستخدم. لو اقتربنا من جملة التوصيل Connection String في النافذة السابقة (تأكد من أن خاصية Connected قيمتها سالبة) و شاهدناها كاملة ستكون غالبا بالصيغة التالية: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Db.mdb;Persist Security Info=False;Jet OLEDB ![]() و إذا قسّمناها حسب أجزائها ستكون كما يلي: Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Db.mdb; Persist Security Info=False; Jet OLEDB ![]() لذلك يمكننا تقديم جملة التوصيل داخل التوليف كما يلي: procedure TForm1.Button1Click(Sender: TObject); begin ADOConnection1.Connected := false; ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=C:\Db.mdb;' + 'Jet OLEDB ![]() ADOConnection1.Connected := true; end; أو ربّما تقوم بتحديد صيغة التوصيل في زمن التصميم دون تحديد كلمة السر، و يتم تقديم كلمة السر عند محاولة فتح التوصيل أثناء التشغيل، بحيث يتم تحديد خاصية كلمة السرّ فقط كالتالي: procedure TForm1.Button1Click(Sender: TObject); begin ADOConnection1.Connected := false; ADOConnection1.Properties[ 'Jet OLEDB ![]() ADOConnection1.Connected := true; end; مكان آخر أكثر مركزية يمكن فيه تحديد جملة التوصيل أو إحدى خصائص التوصيل، و هو حدث BeforeConnect التابع لمكون ADOConnection. هذا الحدث يطرأ مباشرة قبل قيام المكون بفتح التوصيل، procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject); begin ADOConnection1.Properties[ 'Jet OLEDB ![]() end; نعيد التذكير بأنه يمكن تحديد أية خاصية بصورة منفردة من خلال خاصية Properties التابعة لمكوّن ADOConnection، مثلا يمكن تحديد خاصية مورد البيانات Data Source كالتالي: ADOConnection1.Properties['Data Source'].Value := 'C:\Db.mdb'; كلمة أخيرة: تخصيص كلمة سرّ لقاعدة البيانات يراد به قصر فتح قاعدة البيانات و الاطلاع على محتوياتها على من هم مخوّل لهم بذلك. و برغم أن حماية كلمة السرّ غير مضمونة أمام محاولات المتطفلّين لكشفها خاصة في ملفات اكسيس؛ فإن هذا لا يمنعنا من جعل هذا الأمر أكثر صعوبة. لذلك فان الأمر يتطلب مزيدا من الحماية على مستوى التوليف نفسه. لماذا؟ لأنك لو قمت بفتح نسخة الملف التنفيذي (EXE) لبرنامجك بواسطة أي محررّ نصوص و قمت بالبحث فيه عن كلمة السرّ ستجدها واضحة و يمكن لأي شخص بقليل من الاحتراف أن يجدها، لأن التوليف المحوّل من قبل دلفي يبقي على الجمل النصيّة كما هي، حتى لو قمت بتفكيكها إلى أحرفها أو خصّصتها في متغيّر في اجرائية غير الاجرائية التي يتم فيها التعامل مع جملة التوصيل. لذلك يستحسن دائما ترميز كلمة السرّ و الاحتفاظ بها داخل التوليف بصورة مشفّرة، و أن تقوم بفتح شفرتها عند القيام بفتح قاعدة البيانات.
عرين العروبة بيت حرام ..... وعرش الشموس حمىً لا يضام
هادا بلدي سوريا |
||||||
![]() |
![]() |
#2 | ||||||
مشرف متقاعد
|
![]() بالمناسبة أنا ما بفضل عتعامل مع الـAdo بالداتابيز
في بالدلفي أداة تانية أحسن برأيي بركي منبقى منحكي عنا بعدين |
||||||
![]() |
![]() |
#3 |
شبه عضو
-- اخ حرٍك --
|
![]() يمكن رح يلاقي أغلب المشاركين إنو هالمقالة صينية أو سنسكريتية
بس بحب وضح شغلة أو بالأحرى بسط المفهايم شوي أولا الADO هي ليست أداة كما سماها أخي كيكو الموضوع هون عم يتحدث عن Active Data Object وهيدا مفهوم عام وضع من قبل واضعي أسس البرمجة غرضية التوجه أو ما يدعى OOP أو Object Oriented Programming وبغض النظر عن اللغة المتبعة في البرمجة أكانت هي Delphi أو كانت VB أو حتى السكريبتات الأنية التنفيذ كجافا سكريبت وغيرها فهي جمعها بحاجة لتتعامل مع عناصر أخرى خارجية لكي تتستطيع التعامل والتخاطب مع قواعد البيانات وبالنسبة لـ ADO فقد كانت ولمدة طويلة من الزمن أكثر المفاهيم تطوراً في التعامل مع قواعد البيانات بشكل عام وليس فقط قواعد Access بل النظام نفسه يمكنه أن يؤمن لك التعامل وبسهولة مع Oracle أو SQL SERVER أو حتى يمكن التخاطب مع الدليل التفاعلي لويندوز Active Directory حيث يمكنك عن طريق ADO الاستعلام والبحث في اعادات الشبكات واستخراج أسماء المستخدمين أو الأجهزة المشتركة في نفس النطاق على سبيل المثال. إذا ADO هي مجموعة من العناصر البرمجية التي تستخدم في كثير من اللغات البرمجية الأخرة للتعامل مع طيف واسع وكبير من قواعد البيانات ضمن بيئة ويندوز بشكل عام مهما كانت هذه القاعدة تبدا من ملفات نصية بسيطة CSV files إلى القواعد العلائقية الضخمة كـ SQL SERVER and ORACLE في الحقيقة منذ أكثر من سنتين تقريباً جائتنا مايكروسوفت بالنسخة المطورة من ADO وهي تختلف كلياً عن النسخة القديمة وهي ADO.NET وقد تم برمجتها لكي تتعامل وبسرعة عالية مع طيف أوسع ليس فقط مع قواعد البيانات بل وحتى مع وسائل اتصال وبروتوكولات متعددة وما يميز هذه النسخة الجديدة كونها تتخاطب فيما بينها ومع بقية البيئات ببروتوكلات SOAP و XML مما يجعلها تستطيع أن تتعامل مع بيئات وأنظمة غير ويندوز أيضاً مثل UNIX و Linux وهذا ما يجعل من مبرمجي بيئة ويندوز أن يضعو برمجيات يمكنها أن تتعامل مع قواعد بينات MySQL أو غيرها من القواعد المعتمدة في نظام Unix و Linux فقط أردت التوضيح كي لا تفهمو أن ADO هي أداة برمجية فهي بعيدة بمفهومها عن أدواة ActiveX Object المستخدمة في دلفي و فيجوال بيسك بل وحتى تلك الأدوات المستخدمة لا تعمل بدون وجود ADO فهي تعتمد بالأصل على ADO في تنفيذ العمل لكم تحياتي |
![]() |
![]() |
#4 | ||||||
القــــــــــــــــــائم
|
![]() انا بحب قول شغلي .. انا بعتقد بالكمبيوتر بشي بالنيب الي راسخ .. كل شي جديد هوي احسن من الي قبلو .. هيك انا عندي اعتقاد ما بشكل فيه ابدا .. الانو عادا الشكرات العملاقة مات بتاتي بشي جديد غير للتغطية على عيوب السابقين وادراج خواص اقوى و خلافو ..
انا خبرتي برمجيا بالتعامل مع قواعد البيانات متواضعة .. بس صراحة ما تعاملت بحايت غير مع الاADO بالدلفي انا ما كنت على اطلاع بغيرها .. ولما انتقلت للسي شارب .. وجدت انو الدعم الاساسي والتطوير الاساسي نالتهaDO بدون منافسة .. لدرجة ما كنت بتوقع في طريقة اخرى للتعامل من دون ال ADO ههههههه ولما تجي شركة عملاقة متل مايكرو سوفت بلغة عملاقة متل السي شارب كاقوى لغة على الاطلاق بالتعامل مع ويندوز الحالي والمستقبلي بدرجة اكبر .. بدعم كامل لل ADO بيطرني سلم لهال الاداة .. بدون مجرد التفكير باداة اخرى .. والله اعلم ![]() |
||||||
![]() |
![]() |
#5 | ||||||
مشرف متقاعد
|
![]() أولا القصد من كلمة أداة هي أدوات الوصول والإرتباط بقواعد البيانات مجرد تعبير ما لو علاقة بالـ activex وغيرو من الأدوات بالمناسبة بالنهاية كلن كائنات (objects) للعلم فقط...!
وأدوات الوصول هنن تلاتي متل ما بتقدم دلفي و C++ وأغلب اللغات .. 1- BDE (Borland Database Engine) 2- ADO 3- InterBase السريع ثانيا للعلم كمان والتوضيح للشباب قاعدة بيانات أوراكل لا تسمى قاعدة بيانات علائقية بل تسمى قاعدة بيانات غرضية أو كائنيّة أو تسمى غرضية-علائقية حسب الإستخدام لها لكن في الأساس هي غرضية التوجه و إذا سميناها متل ماسماها أخي باسل علائقية منكون عم نساويها بـ Access اللي هوي بيطلع بمنتهى السخف أمامها.. تحياتي...!!! |
||||||
![]() |
![]() |
#6 |
شبه عضو
-- اخ حرٍك --
|
![]() حتى ما خربط حدا معي شباب
كلمة علائقية مقصود بها المصطلح الإنكليزي Relational Database وسأقتطف مقطعاًُ من مرجع "Introduction to relational Database" "Access is a relational database but it is not a database server. mSQL, SQL Anywhere, DB2, Oracle are both relational databases and database servers. The Btrieve NLM is a database server but it is not a relational database." يمكنك أخي كيكو قراءة بعض من هذا المرجع على العنوان
- ابو شريك هاي الروابط الي
بيحطوها الأعضاء ما بتظهر ترى غير للأعضاء، فيعني اذا ما كنت مسجل و كان بدك اتشوف
الرابط (مصرّ ) ففيك اتسجل بإنك تتكى على كلمة
سوريا -
وبترجتمته للعربية يقول قاعدة بانات أكسس هي قاعدة علائقية ولكنها ليست مخدم قواعد بيانات أما كل من mSQL, SQL Anywhere, DB2, Oracle فهم قواعد علائقية ومخدم قواعد بيانات معاً. أما Btrive NLM فهي فقط مخدم قواعد بانات وليست قواعد علائقية" |
![]() |
![]() |
#7 | ||||||
مشرف متقاعد
|
![]() أنا رجعت للمرجع ومعك حق بانو امها غلائقية
لكن هذا لا يعني أنو هالشي بيتخذ نفس المعنى بأكسيس و أوراكل لانو بأوراكل تغلب التعامل معها و اقوة فيها بالكائنات الممكنة فيها |
||||||
![]() |
![]() |
#8 |
شبه عضو
-- اخ حرٍك --
|
![]() بعتقد أخي كيكو إنو الشباب اللي بالمنتدى ما رح يفهمو الحكي اللي عم ندردش فيو
الفرق هو بإدارة القواعد sql server and Oracel are Relational Database Management system يعني نظام كامل لإدارة القواعد العلائقية وكلمة نظام هنا تتضمن جميع الخدمات التي يأمنها النظام من الموجودية الدائمة والقابلية للتوسع بشكل ديناميكي مع متطلبات العمل. |
![]() |
![]() |
#9 | ||||||
عضو
-- قبضاي --
|
![]() شكرا كتير عالمعلومات الحلوة
حمصي أنا إخشيني الويل إذا أحببتني
قلبي قفص صدري يحرسه رمح مخملي |
||||||
![]() |
![]() |
#10 |
مسجّل
-- اخ طازة --
|
![]() thanksss
|
![]() |
![]() ![]() |
|
|