بسم الله الرحمن الرحيم
مثال على التعامل مع قواعد بيانات MySql
سيكون على أجزاء ان شاء الله.... وهذا أهمها حيث أن الاتصال بقاعدة اليبانات يعد شيئا أساسيا لاستكمال الموضوع
قبل أن نبدأ بالتفاصيل لا بد من توضيح عدة نقاط :
أولا : هذه المثال حي ومتصل بقاعدة بيانات مجهزة على موقع www.db4free.org ( أي أنه لا بد من الاتصال بالانترنت أثناء التنفيذ )
ثانيا : للتعامل مع أي قاعدة بيانات أخرى من خلال الفوكس برو، لا بد من تجهيز معرف الاتصال الخاص بتلك القاعدة، وكون أننا سنتعامل مع MySql فلا بد من تنصيب MySql Connector – ODBC 5.1
وتستطيع تحميله من هنــــــــــــــا
ثالثا : وللعلم فطرق الاتصال المتاحة من خلال الفوكس برو هي :
- Remote Views
- Cursor Adapter
- SQL Pass Through
الاولى والثانية تعطينا امكانية التعامل مع الجداول بصورة مرئية وكأننا نستخدم جداول فوكس برو عادية
أما الثالثة وقد تبدو الأصعب فهي تعتمد على الأوامر البرمجية بشكل مباشر، علما بأنها الطريقة التي سأتبعها هنا.
رابعا : طريقة العمل هنا ستكون ببساطة مجرد أوامر Sql عادية كالتي نستخدمها في الفوكس برو، مع قليل من الاضافات، والمراعاة لما تقبل به MySql من أوامر
خامسا : عند نجاح الاتصال يتم التعامل مع قاعدة البيانات من خلال ما يسمى Connection Handle وهو عبارة عن رقم نستفيد منه كمرجع رئيسي للاتصال الذي تم
سادسا : طريقة التأكد من تنفيذ أوامر SQL Pass Through تكون بفحص النتيجة المعادة فاذا كانت صفرا فهذا يعني فشل الامر لأحد الأسباب، أما اذا كانت أكبر من صفر فذلك يعد نجاحا للأمر المنفذ.
لنبدأ الأن على بركة الله،
على الموقع المذكور أعلاه تم تجهيز قاعد بيانات سميت FoxDatabase تحتوي على جدول واحد اسمه Contacts يتكون من أربعة حقول هي الرقم والاسم ورقم الهاتف والمدينة، وتم فيه تخزين 500 سجل مختلف كما يظهر جزء منها في الصورة
جرب المثال المرفق، اذا نجح فأنت في الاتجاه الصحيح
set talk off
nConn = متغير يحتوي على رقم الاتصال الذي تم مع السيرفر والذي سنستخدمه في كافة العمليات
public nConn
nConn=0
عند محاولة الاتصال MySql يستخدم هذه الامر لمنع ظهور شاشة بيانات
=sqlsetprop(0,"DispLogin" , 3 )
الخاص به IP Address نقوم الأن بتجهيز أمر الاتصال بالسيرفر والذي سيحتوي على اسم السيرفر او
بالاضافة لتعريف اسم قاعدة البيانات واسم وكلمة مرور المستخدم
lcSqlstringconnect=;
[Driver={MySQL ODBC 5.1 Driver};Port=3306;]+;
[Server=www.db4free.net;] +;
[STMT=set NAMES cp1256;] +;
[Database=foxdatabase;] +;
[Uid=sh;]+;
[Pwd=sh;]+;
[.t.]
sqlstringconnect محاولة الاتصال بقواعد البيانات باستخدام الامر
nConn=sqlstringconnect(lcSqlstringconnect)
if nConn > 0
messagebox([تم الاتصال بقواعد البيانات])
else
messagebox([غير قادر على التواصل مع السيرفر])
return .f.
endif
اذا وصلنا لهذه النقطة فهذا يعني أنه تم الاتصال ونستطيع المتابعة
الأن سنحدد طريقة حفظ التغييرات التي تتم على البيانات حيث سنجعلها بناءاً على رغبتنا وعند طلبنا
=sqlsetprop(nConn,"Transactions", 2)
والان وبعد نجاح محاولة الاتصال سنقوم بسحب سجلات الجدول الرئيسي لجدول فوكس برو مؤقت
cCommand = "Select * from Contacts"
nResult = sqlexec(nConn, cCommand , "Contacts")
if nResult > 0
select Contacts
browse
else
messagebox([Opsssss....])
return .f.
endifيتبع ان شاء الله..