مكتبة Sqlite للغة الأسس

قمت في وقت سابق بشرح عن طريق مقطع لعمل Wrapper لمكتبة في لغة C
https://community.alusus.org/t/fydyw-bnae-mktbt-ghtae-wrapper-fy-lght-alass-lmktbt-sqlite3/34/2

بعدما انتهيت من الشرح قمت بتحسين المكتبة بشكل افضل وجعلت طريقة استخدامها اسهل بخير ثم رفعت الشفرة المصدرية الخاصة بالمكتبة الى Github

التثبيت

قبل استخدام المكتبة عليك تثبيت مكتبة Sqlite3 ان لم تكن مثبته مسبقا
اذا كنت تستخدم توزيعة ديبيان وما بني عليها اكتب الامر التالي في الطرفية

apt install libsqlite3-0

ثم استدع المكتبة الى شفرتك

import "Apm.alusus";
Apm.importFile("Alusus/Sqlite");

دوال المكتبة

  • Sqlite.exec(sql: ptr[array[Char]]): Array[ColumnMap];
  • Sqlite.exec(sql: ptr[array[Char]], errmsg: ptr[array[Char]]): Array[ColumnMap];

المعاملات

  • this = ptr[array[Char]]
    // بناء الصنف مع تحديد مسار قاعدة البيانات 
    def mydb: Sqlite = "mydb.db";  

مثال بسيط

def sqlite: SQLite3 = "mydb.db";

sqlite.exec("CREATE table teachers(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, section INT)");

sqlite.exec("INSERT INTO teachers VALUES(NULL, 'Mohammed', 1);");

def cm: Array[ColumnMap] = sqlite.exec("SELECT * FROM teachers;");

Console.print("ROW 0 COLUMN 'NAME': %s\n", cm(0)("name"))

ستجد المزيد من الامثلة في مجلد Examples

الرخصة

رخصة المكتبة هي Apache 2

3 Likes

جميل جدا. أحسنت.

هل يمكن استخدام الصنف العام Map الذي تعمل عليه بدل الصنف الخاص ColumnMap؟ قراءتي السريعة للمكتبة توحي لي أن الصنف ColumnMap عام وليس فيه ما يخص sqlite تحديدا.

نحتاج أيضا لإضافة التعريب.

الصنف ColumnMap يقوم بالمقارنة بين نصين لذلك انا احتاج فيه لبعض دوال String لمقارنة مؤشر المحارف
بالامكان الاستغناء عن ColumnMap عن طريق دعم امكانية للتحقق من النوع للمتغير مثل instanceof

ساعمل على اضافة التعريب بعد ان نقرر هل نبقي على ColumnMap ام نستخدم Map

أها، فهمت. نعم، يمكننا تعديل المكتبة بعد إضافة الدعم لinstanceof.

1 Like