ODBC Functions

مرحبا بكم جميعا

نتحدث في مقالتنا اليوم عن مكتبة خاصة بقواعد البيانات في لغة البرمجة Ring وهي مكتبة دوال ال  ODBC ،وهي المسؤولة عن فتح ومعالجة قواعد البيانات المختلفة.

وفيما يلي دوال ال ODBCفي لغة Ring:

odbc_init() —> ODBC Handle

 لتهيئة الاتصال بقاعدة البيانات

odbc_drivers(ODBC Handle) —> Drivers

للحصول على ال drivers

odbc_datasources(ODBC Handle) —> Data sources

للحصول على ال drivers من  ال datasource

(odbc_close(ODBC Handle

لااغلاق ال resources بعد استدعاء الدوال

(odbc_connect(ODBC Handle, cConnectionString

لعمل اتصال بقاعدة البيانات

(odbc_disconnect(ODBC Handle

لقطع الاتصال بقاعدة البيانات

(odbc_execute(ODBC Handle, cSQLStatement

لتنفيذ جمل ال SQL على قاعدة البيانات

odbc_colcount(ODBCHandle)—>ColumnsCount

للحصول على عدد الاعمدة في ال query او جدول الاستعلام.

(odbc_fetch(ODBC Handle

للتطبيق على الصفوف في ال query

(odbc_getdata(ODBCHandle,nColumnNumber

للحصول على ال data في الاعمدة

(odbc_tables(ODBC Handle

للحصول على الجداول في قاعدة البيانات

(odbc_columns(ODBC Handle, cTableName

للحصول على أعمدة داخل جدول أو DB

(odbc_autocommit(ODBC Handle, lStatus 

لفتح أو اغلاق خاصية ال autocommit

(odbc_commit(ODBC Handle

لعمل Commit لل Updates في DB

(odbc_rollback(ODBC Handle

لعمل restore  لل Updatedفي DB

ملحوظة:

ال Transaction عبارة عن مجموعة من ال actions لمعالجة ونقل قواعد البيانات من مكان لأخر بنجاح وأثناء ذلك قد يحدث فشل أثناء النقل.

حالات ال Transactions:

  • Active: المرحلة الاولي أثناء التنفيذ.
  • Partially Committed: يكون بعد اخر جملة SQL تم تنفيذها.
  • Committed: عند نجاح التنفيذ.
  • Failed: عند عدم نجاح التنفيذ.
  • Aborted/rolledback: في هذه المرحلة تستعيد قاعدة البيانات حالتها مرة أخري بدلا من بدء ال transaction من جديد.

أي أن ال Commition هي المرحلة النهائية بعد وصول قاعدة البيانات بنجاح وبالتالي عند عمل Commit يعني تسجيل الناتج بعد أخر Commitأي تعمل عمل ال “Save”، وعند عمل rollback يعني استعادة الحالة من جديد بعد اخر Commit أي يتم تنفيذ وتسجيل الناتج لخطوات التنفيذ بعد ال rollback

  • في حالة أن Autocommit =0  يتم تجاهل  المراحل التي لم يتم تسجيل ال Commit فيها وتنفيذ مراحل ال Rollback.
  • وفي حالة أن Autocommit =1 يتم تنفيذ جميع المراحل قبل وبعد ال Commit لان خاصية ال commit مفعلة تلقائيا وان لم يتم تسجيلها وكذلك يتم فيها تنفيذ مراحل ال Rollback.

    وقبل استخدام أي دالة ينبغي تعريف مكتبة ال ODBC كالتالي:

    "Load "odbclib.ring
     Use ODBC functions#

مثال توضيحي على استدعاء دوال مكتبة ال ODBC ثم طباعة ال Drivers:

4.jpg الكود المرفق في البرنامج

ويمكن رؤيتها في الويندوز عن طريق اتباع الخطوات التالية:

Control panal-Administrative Tools-ODBC data sources

5.jpg

كيفية الاتصال بقاعدة البيانات:

1-أولا يجب عليك عمل قاعدة بيانات وأبسط قاعدة بيانات تكون ب Microsoft Access

يمكنك رؤية الفيديو من اعداد مبتكر اللغة الفيديو الأول يشرح فيه المفاهيم الاساسية للجداول.

لفتح الفيديو اضغط هنا

ويوجد شروحات كثيرة علي ال Web بالعربي لشرح الجداول وقواعد البيانات وال SQL.

2-بعد عمل الجدول نضعه مع ملف ال Source.

3-نقوم باستدعاء مكتبة ال ODBC وهي “odbclib.ring”.

4-نقوم بتهيئة الاتصال بقاعدة البيانات عن طريق الدالة ()odbc_init.

5-ثم نقوم بالاتصال بقاعدة البيانات التي أنشأناها بال microsoft access عن طريق الدالة ()odbc_connect ونقوم بتعريف اسم قاعدة البيانات وال driver المسؤل عن فتحة.

6-ثم بعد ذلك يمكن لنا ادارة قاعدة البيانات بأوامر ال SQL المختلفة من اضافة وتعديل وحذف و…الخ. وذلك عن طريق الدالة ()odbc_execute ونستطيع كذلك بعد ذلك استخدام باقي دوال ال ODBC التي ذكرناها في الجدول حسب ما يريد المستخدم.

7-في النهاية نقوم بغلق الاتصال بقاعدة البيانات عن طريق الدالة ()odbc_disconnect.

مثال توضيحي:

connection#
"load "odbclib.ring
()oOdbc=odbc_init
("{(see odbc_connect(oOdbc,"DBQ=data.mdb;Driver={Microsoft Access Driver (*.mdb  
(odbc_disconnect(oOdbc
(odbc_close(oOdbc

 

في المثال التالي يوجد جدول باسم data.mdb.

6.jpg

مثال توضيحي علي كيفية الحصول على البيانات داخل الاعمدة:

صورة توضيحية للداتا بيز أو الجدول داخل برنامج Microsoft Access:

1.jpg

2.jpg الكود المرفق في الصورة

مثال 2:

fetch query and get the tables#
 at this moment I have 2 tables,customer and clients in the data DB#
"load "odbclib.ring
()oOdbc=odbc_init
("{(odbc_connect(oOdbc,"DBQ=data.mdb;Driver={Microsoft Access Driver (*.mdb
see odbc_tables(oOdbc) + nl
(while odbc_fetch(oOdbc
see odbc_getdata(oODBC,3)+nl  
end
(odbc_disconnect(oOdbc
(odbc_close(oOdbc

مثال3:

fetch query and get the columns of table#
"load "odbclib.ring
()oOdbc=odbc_init
("{(odbc_connect(oOdbc,"DBQ=data.mdb;Driver={Microsoft Access Driver (*.mdb
odbc_columns(oOdbc,"clients")+nl
(while odbc_fetch(oOdbc
get the data in the fourth columns from clients table#
see odbc_getdata(oODBC,4)+nl   
end
(odbc_disconnect(oOdbc
(odbc_close(oOdbc

مثال توضيحي على ال Commition and rolledback:

في هذا المثال سوف نتعامل مع جدول ال Clients وهو  فارغ كما في الشكل التالي:

2.jpg

وجمل ال SQL في البرنامج كما هو موضح بالشكل:

4.jpg الكود المرفق في البرنامج

وهنا الناتج في ال  DBبعد عمل Run للبرنامج:

5.jpg

Save and Restore images

كما يمكن تخزين الصور داخل قاعدة البيانات ولكن يشغل حيز كبير في ال DB

ويتم ذلك عن طريق تحويل الصور الي ال Hexadecimal

  • يتم تخزين الصورة في قاعدة البيانات عن طريق الامر Read
  • ويتم نسخ نفس الصورة بالقيمة ال Hexadecimal المخزنة في قاعدة البيانات ثم تحويلها مرة أخري الي String عن طريق الامر Write

كما في المثال التالي:

6.jpg   الكود المرفق في الصورة

ثم بعد ذلك يمكننا استرجاع الصورة من DB عن طريق التحويل مرة أخري ل String

restore image#
odbc_execute(pODBC,"select value from tel where id = 2 ") + nl
(odbc_fetch(pODBC
( ( (write("great.jpg",hex2str( odbc_getdata(pODBC,1

تستطيع الاطلاع علي المشاريع مفتوحة المصدر من الموقع  GitHub

الموقع الرسمي للغة  http://ring-lang.net

 

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s