إنشاء قاعدة بيانات بإستخدام SQLite

بيئة زامرن كغيرها تدعم أيضا SQLite (اس كيو لايت)، لذا من اهم الدروس التي يجب شرحها كيفية إنشاء قاعدة بيانات بإستخدام SQLite، ومعرفة كيفية إنشاء الجداول وإرسال وإسترجاع البيانات، سنحتاج اولاً لإضافة حزمة SQLite-Net من متجر Xamarin.

لتحميل حزمة SQLite-Net من داخل المشروع وعلى مجلد Component إضغط على الزر الأيمن ثم إختر Get More Compoenet..

 

open_sqlite_from_xamarin_store

إذا كنت متصل بالإنترنت ستفتح نافزة وهي متجر Xamarin، اكتب في مربع البحث SQLite كما موضح في الصورة التالية.

 

sqlite_from_xamarin_store

كل ما عليك فتح الحزمة وقم بإضافتها (Add To App) لمشروعك، الحجم صغير جداً.

بعد أن تتأكد ان الحزمة تم تحميلها وإضافتها للمشروع واصل معي..

قم بإنشاء كلاس جديد، وليكن بإسم mySqlClass.cs .

ماذا بعد ذلك؟؟

إختيار المسار الذي يتم فيه حفظ القاعدة:

من المؤكد يتم حفظ ملف قاعدة البيانات في ذاكرة المستخدم داخل مجلدات التطبيق، نحتاج ان نحدد المسار وننشئ داخله ملف القاعدة(عذراً، أقصد قاعدة البيانات 🙂 ).

ملاحظة: ملف قاعدة البيانات عادة يكون بصيغة mydataBase.db ، أما الآن يتوفر الإصدار الثالث فيفضل التسمية بالصيغة myDatabase.db3 ، وانت تقرأ هذا المقال ربما تكون هنالك إصدارات أحدث.

من داخل كلاس mySqlClass نُعرف متغير global بإسم path مثلاً من نوع string، وهو الذي سيحمل مسار القاعدة.

private string path = Path.Combine(System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal), "myDataBase.db3"); 

كيفية إنشاء الجدول في قاعدة بيانات SQLite :

داخل كلاس mySqlClass الذي أنشأناه نقوم بإنشاء كلاس داخلي وهو الذي سيشكل الجدول الذي نريد أن ننشأه:

        [Table("myTable")]
        public class myTable
        {
            [PrimaryKey, AutoIncrement]
            public int ID { get; set; }

            [MaxLength(255)]
            public string Name { get; set; }

            public string Email { get; set; }
        }

ملاحظة: يمكنك إستخدام  MaxLength(number) وتحدد الحد الأقصى الذي تسمح به، أو يمكنك تجاهله وتستخدم الإعدادات الإفتراضية كما فعلنا بالحقل (Email) .

لكن فيزيائياً لم يتم إنشاء الجدول بعد، لننفيز أمر إنشاء الجدول يفضل أن ننفزه على ال constructor ليتم التأكد دائما من وجود الجدول كلما تم إنشاء instance من هذا الكلاس (mySqlClass.cs).

        public mySqlClass() {
            if(!File.Exists(path)) {
                //prepare sql connection
                var con = new SQLiteConnection(path);
                // create our table 'myTable'
                con.CreateTable<myTable>();
            }
        }

الشرط File.Exists(path) للتأكد من وجود الجدول ام لا، لتفادي مشكلة إنشاء جدول جديد كل مرة ومسح الجدول القديم.

إرسال بيانات للجدول:

نقوم بعمل دالة تعالج هذه المهمة

     public void add(string name, string email){
         var con = new SQLiteConnection(path);
         var data = new myTable { Name = name, Email = email };
         con.Insert(data);
     }

كيفية حزف صف معيّن من الجدول:

     public void deleteRow(int id) {
         var con = new SQLiteConnection(path);
         con.Query<myTable>("delete from myTable where ID = ?", id);
     }

حزف جميع الصفوف التي بالجدول (إفراغ الجدول):

     public void deleteAll() {
         var con = new SQLiteConnection(path);
         con.Query<myTable>("delete from myTable ");
     }

جلب صف معيّن – البحث عن صف معيّن داخل الجدول:

     public List<myTable> getData(int id) {
         var con = new SQLiteConnection(path);
         var data = con.Query<myTable>("select * from myTable where id = ?", id);
         return data;
     }

في هذه الدالة يتم إسترجاع List من نوع الكلاس myTable بمعنى انها تحتوي على ID و Name و Email .

كيفية جلب جميع الصفوف التي بالجدول:

     public List<myTable> getData() {
         var con = new SQLiteConnection(path);
         var data = con.Query<myTable>("select * from myTable");
         return data;
     }

 

لكي لا اطيل عليكم حاولت إختيار أكثر الدوال إستخداماً، أتمنى ان تكونوا إستفدتم من هذا المقال، لا تنسونا من صالح الدعاء 🙂 .

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *