المتطلبات الأساسية:
يجب عليك إكمال المهام التالية قبل التدرب على الأمثلة في هذا البرنامج التعليمي:
أ. قم بتثبيت لغة Golang في النظام إذا لم يتم تثبيتها من قبل. قم بتشغيل الأمر التالي للتحقق من الإصدار المثبت من Golang:
نسخة $ go
ب- قم بتثبيت sqlite3 في النظام إذا لم يكن قد تم تثبيته من قبل. يتم تثبيت Sqlite3 افتراضيًا على Ubuntu 20+. قم بتشغيل الأمر التالي للتحقق من الإصدار المثبت من sqlite3:
sqlite3 دولار - الإصدار
ج. قم بتشغيل الأوامر التالية لإنشاء مجلد باسم 'golang-sqlite' وانتقل إلى هذا المجلد حيث سيتم تخزين ملف قاعدة بيانات SQLite وملف Golang:
mkdir golang-sqlite دولار$ cd golang-sqlite
د- قم بتشغيل الأمر التالي لتنزيل حزمة Golang الضرورية لاستخدام SQLite مع Golang:
اذهب واحصل على github.com/mattn/go-sqlite3
عمليات قواعد البيانات باستخدام Golang و SQLite
يتم عرض عمليات قاعدة البيانات الأساسية باستخدام قاعدة بيانات SQLite و برنامج Golang النصي في هذا البرنامج التعليمي. تم ذكر قائمة مهام قاعدة البيانات التي تم تناولها في هذا البرنامج التعليمي في ما يلي:
- قم بإنشاء قاعدة بيانات SQLite
- قم بإجراء اتصال قاعدة بيانات SQLite
- قم بإنشاء جدول جديد
- أدخل البيانات في الجدول
- اقرأ البيانات من الجدول
- تحديث بيانات الجدول
- احذف البيانات من الجدول
قم بإنشاء قاعدة بيانات SQLite باستخدام Golang
قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي ينشئ ملف قاعدة بيانات SQLite جديد باسم “test.db”. يتم استيراد أربع وحدات في البرنامج النصي. تُستخدم الوحدة النمطية 'fmt' لطباعة الإخراج في الجهاز. يتم استخدام وحدة 'السجل' لإجهاض البرنامج عند ظهور أي خطأ. تُستخدم وحدة 'نظام التشغيل' لإنشاء قاعدة بيانات SQLite ومعالجة الخطأ. تُستخدم الوحدة النمطية 'go-sqlite3' لإجراء اتصالات بقاعدة بيانات SQLite من خلال Golang. يتم استخدام طريقة Create () للوحدة النمطية 'os' هنا لإنشاء قاعدة بيانات SQLite. إذا تم إنشاء قاعدة البيانات بنجاح ، فستتم طباعة رسالة نجاح في الجهاز. خلاف ذلك ، سيتم إنهاء البرنامج. تم استدعاء أسلوب Close () لإغلاق اتصال قاعدة البيانات.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'أنت'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات SQLite جديدة
ديسيبل و يخطئ : = أنت . يخلق ( 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
FMT . Println ( 'تم إنشاء قاعدة البيانات.' )
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف 'db_connect.go':
$ go قم بتشغيل db_connect.goقم بتشغيل الأمر “ls” للتحقق مما إذا كان ملف قاعدة البيانات “test.db” قد تم إنشاؤه أم لا:
ليرة سوريةيوضح الإخراج التالي أن رسالة النجاح ، 'تم إنشاء قاعدة بيانات' ، تمت طباعتها في الإخراج وأن ملف 'test.db' تم إنشاؤه في الموقع الحالي:
تواصل مع قاعدة بيانات SQLite باستخدام Golang
قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي يفتح ملف قاعدة البيانات “test.db” وقم بإجراء الاتصال بقاعدة البيانات. يتم استيراد وحدة قاعدة البيانات / وحدة SQL الخاصة بـ Golang هنا للقيام بهذه المهمة. يتم استخدام طريقة open () هنا لإجراء اتصال بقاعدة بيانات SQLite الموجودة. إذا تم توصيل قاعدة البيانات بنجاح ، فستتم طباعة رسالة نجاح في الجهاز. خلاف ذلك ، سيتم إنهاء البرنامج.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'قاعدة بيانات / SQL'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات SQLite جديدة
ديسيبل و يخطئ : = sql . يفتح ( 'sqlite3' و 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
fmt . Println ( 'تم توصيل قاعدة البيانات بنجاح.' )
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف “db_connect2.go”:
$ go قم بتشغيل db_connect2.goيوضح الإخراج التالي أن ملف قاعدة البيانات 'test.db' مفتوح ومتصل بنجاح. تتم طباعة رسالة النجاح 'تم توصيل قاعدة البيانات بنجاح' في الإخراج:
قم بإنشاء جدول في قاعدة بيانات SQLite باستخدام Golang
قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي ينشئ جدول قاعدة بيانات باسم 'members' داخل ملف قاعدة البيانات 'test.db'. يتم استخدام طريقة Exec () هنا لتنفيذ استعلام CREATE TABLE الذي يقوم بإنشاء جدول 'الأعضاء' بستة حقول ومفتاح أساسي. إذا تم إنشاء الجدول بنجاح في قاعدة البيانات ، فستتم طباعة رسالة نجاح. خلاف ذلك ، سيتم إنهاء البرنامج.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'قاعدة بيانات / SQL'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات sqlite جديدة
ديسيبل و يخطئ : = sql . يفتح ( 'sqlite3' و 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
مقدار ثابت استفسار خيط = '
إنشاء جدول إذا لم يكن أعضاء خارجيين (
معرف INTEGER INTEGER NOT NULL PRIMARY KEY ،
الاسم CHAR (40) NOT NULL ،
mtype CHAR (100) NOT NULL ،
البريد الإلكتروني CHAR (50) ،
العنوان TEXT NOT NULL ،
موبايل CHAR (25) NOT NULL) ؛ `
_ و يخطئ : = ديسيبل . إكسيك ( استفسار ) ؛
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
fmt . Println ( 'تم إنشاء الجدول بنجاح.' )
}
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف 'create_table.go':
$ go قم بتشغيل create_table.goيوضح الناتج التالي أنه تم إنشاء الجدول بنجاح في قاعدة البيانات. تمت طباعة رسالة النجاح 'تم إنشاء الجدول بنجاح' في الجهاز:
يمكنك تسجيل الدخول إلى SQLite للتحقق مما إذا كان الجدول قد تم إنشاؤه أم لا في قاعدة البيانات.
قم بتشغيل الأمر التالي لتشغيل SQLite بقاعدة بيانات “test.db”:
اختبار sqlite3 $. dbقم بتشغيل أمر SQLite '.tables' من موجه أوامر SQLite للتحقق من أسماء جدول قاعدة البيانات:
sqlite3> الجداوليوضح الناتج التالي أن قاعدة البيانات تحتوي على جدول 'الأعضاء' الذي تم إنشاؤه عن طريق تنفيذ برنامج Golang النصي:
أدخل السجلات في جدول SQLite باستخدام Golang
يمكن إدراج سجلات متعددة في الجدول عن طريق تنفيذ استعلام INSERT عدة مرات أو عن طريق إضافة قيم متعددة في استعلام INSERT واحد. قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي يقوم بإدراج ثلاثة سجلات في جدول 'members' الخاص بملف قاعدة البيانات 'test.db' باستخدام استعلام INSERT واحد. يتم استخدام طريقة Exec () هنا لتنفيذ استعلام INSERT. إذا تم إدراج السجلات بنجاح في الجدول ، فستتم طباعة رسالة نجاح. خلاف ذلك ، سيتم إنهاء البرنامج.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'قاعدة بيانات / SQL'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات SQLite جديدة
ديسيبل و يخطئ : = sql . يفتح ( 'sqlite3' و 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
مقدار ثابت استفسار خيط = '
أدخل أعضاء INTO (المعرف ، الاسم ، النوع ، البريد الإلكتروني ، العنوان ، الهاتف المحمول)
القيم (1، 'نهال أحمد'، 'فضي'، 'nehal@gmail.com'، '36، Dhanmondi 2، Dhaka'، '01844657342') ،
(2، 'Abir Chowdhury'، 'Gold'، 'abir@gmail.com'، '102، Mirpur 10، Dhaka'، '01994563423') ،
(3 ، 'ميرزا عباس' ، 'فضي' ، 'abbas@gmail.com' ، '12 ، جيغاتالا ، دكا' ، '01640006710') ؛ '
// تنفيذ الاستعلام
_ و يخطئ : = ديسيبل . إكسيك ( استفسار ) ؛
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
fmt . Println ( 'تم إدراج السجلات بنجاح.' )
}
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف 'insert_table.go':
$ go قم بتشغيل insert_table.goيوضح الإخراج التالي أنه تم إدراج السجلات بنجاح في الجدول. تتم طباعة رسالة النجاح ، 'تم إدراج السجلات بنجاح' في الإخراج:
يمكنك تسجيل الدخول إلى SQLite للتحقق مما إذا تم إدراج السجلات الثلاثة بنجاح أم لا في جدول 'الأعضاء'.
قم بتشغيل الأمر التالي لتشغيل SQLite بقاعدة بيانات “test.db”:
اختبار sqlite3 $. dbقم بتشغيل استعلام SELECT التالي لقراءة كل محتويات جدول 'الأعضاء':
sqlite3> تحديد * من الأعضاء ؛يوضح الناتج التالي أن جدول 'الأعضاء' يحتوي على ثلاثة سجلات تم إدراجها بواسطة برنامج Golang النصي:
اقرأ بيانات جدول SQLite باستخدام Golang
قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي يقرأ سجلات جدول 'الأعضاء'. يجب عليك تحديد المتغيرات في Golang لتخزين القيم التي يتم إرجاعها من استعلام SELECT. في هذا البرنامج النصي ، يتم استرداد خمسة حقول من جدول 'الأعضاء' باستخدام استعلام التحديد. لذلك ، تم تحديد خمسة متغيرات في البرنامج النصي لتخزين قيم الحقول الخمسة لجدول 'الأعضاء' حيث تكون قيمة الحقل 'mtype' هي 'Silver'. يتم استخدام طريقة Query () هنا لتنفيذ استعلام SELECT. بعد ذلك ، يتم استخدام الحلقة 'for' لقراءة مجموعة النتائج التي تم إرجاعها بواسطة استعلام SELECT. تُستخدم وظيفة printf () لطباعة القيم المنسقة لمجموعة النتائج.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'قاعدة بيانات / SQL'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات SQLite جديدة
ديسيبل و يخطئ : = sql . يفتح ( 'sqlite3' و 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// قم بتعريف المتغيرات لتخزين قيم الصف
كان بطاقة تعريف int
كان اسم خيط
كان نوع خيط
كان عنوان خيط
كان متحرك خيط
مقدار ثابت استفسار خيط = حدد المعرف والاسم ونوع mtype والعنوان والجوال
من الأعضاء
حيث mtype = 'الفضة' ؛ ``
// تنفيذ الاستعلام
صفوف و يخطئ : = ديسيبل . استفسار ( استفسار ) ؛
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
fmt . Println ( 'سجلات جميع الأعضاء الفضية:' )
fmt . Println ( 'بطاقة تعريف \ t اسم \ t \ t نوع العضو \ t عنوان \ t \ t رقم الاتصال' )
ل صفوف . التالي () {
صفوف . مسح ( &بطاقة تعريف و &اسم و & نوع و &عنوان و &متحرك )
fmt . برنتف ( '٪د \ t ٪س \ t ٪س \ t ٪س \ t ٪س \ن ' و بطاقة تعريف و اسم و نوع و عنوان و متحرك )
}
}
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف “select_table.go”:
$ go قم بتشغيل select_table.goيوجد سجلان في جدول 'الأعضاء' الذي يحتوي على 'Silver' في الحقل 'mtype'. يُظهر الناتج التالي سجلين لجدول 'الأعضاء' اللذين يتم إرجاعهما بواسطة استعلام التحديد:
قم بتحديث بيانات جدول SQLite باستخدام Golang
قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي يغير قيمة حقل الهاتف المحمول لجدول 'الأعضاء' الذي يحتوي على قيمة id 2. يتم استخدام طريقة Exec () هنا لتنفيذ استعلام UPDATE. إذا تم تحديث السجل بنجاح في الجدول ، فستتم طباعة رسالة نجاح. خلاف ذلك ، سيتم إنهاء البرنامج.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'قاعدة بيانات / SQL'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات SQLite جديدة
ديسيبل و يخطئ : = sql . يفتح ( 'sqlite3' و 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
مقدار ثابت استفسار خيط = '
تحديث أعضاء SET mobile = '018563452390' حيث المعرف = 2 ؛ `
_ و يخطئ : = ديسيبل . إكسيك ( استفسار ) ؛
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
fmt . Println ( 'تم تحديث السجل بنجاح.' )
}
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف 'update_table.go':
اذهب تشغيل update_table.goفي جدول 'الأعضاء' ، يحتوي الصف الثاني على قيمة معرّف 2. المخرجات التالية توضح أن سجل الجدول قد تم تحديثه بنجاح. تتم طباعة رسالة النجاح 'تم تحديث السجل بنجاح' في الجهاز:
يمكنك تسجيل الدخول إلى SQLite للتحقق مما إذا كان قد تم تحديث أي سجل لجدول الأعضاء أم لا.
قم بتشغيل الأمر التالي لتشغيل SQLite بقاعدة بيانات “test.db”:
اختبار sqlite3 $. dbقم بتشغيل استعلام SELECT التالي لقراءة كل محتويات جدول 'الأعضاء':
sqlite3> تحديد * من الأعضاء ؛قيمة مجال المحمول لـ 2 اختصار الثاني سجل جدول الأعضاء هو '01994563423' قبل تنفيذ البرنامج النصي. يوضح الناتج التالي أن قيمة مجال المحمول لـ 2 اختصار الثاني تم تغيير سجل جدول الأعضاء إلى '018563452390' بعد تنفيذ البرنامج النصي:
احذف بيانات جدول SQLite باستخدام Golang
قم بإنشاء ملف Golang بالبرنامج النصي التالي الذي يحذف 3 بحث وتطوير سجل جدول 'الأعضاء' الذي يحتوي على قيمة معرّف 3. يتم استخدام طريقة Exec () هنا لتنفيذ استعلام DELETE. إذا تم حذف السجل بنجاح من الجدول ، فستتم طباعة رسالة نجاح. خلاف ذلك ، سيتم إنهاء البرنامج.
طَرد رئيسي// استيراد الوحدات الضرورية
يستورد (
'FMT'
'سجل'
'قاعدة بيانات / SQL'
_ 'github.com/mattn/go-sqlite3'
)
func رئيسي () {
// إنشاء قاعدة بيانات SQLite جديدة
ديسيبل و يخطئ : = sql . يفتح ( 'sqlite3' و 'test.db' )
// تحقق من وجود أي خطأ
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// تحديد استعلام الحذف
مقدار ثابت استفسار خيط = 'احذف من الأعضاء حيث المعرف = 3 ؛'
// تنفيذ الاستعلام
_ و يخطئ : = ديسيبل . إكسيك ( استفسار ) ؛
لو يخطئ ! = لا شيء {
// أضف رسالة الخطأ إلى السجل
سجل . مميت ( يخطئ )
} آخر {
// اطبع رسالة النجاح
FMT . Println ( 'تم حذف السجل بنجاح.' )
}
}
// أغلق اتصال قاعدة البيانات
ديسيبل . يغلق ()
}
قم بتشغيل الأمر التالي لتنفيذ ملف 'delete_table.go':
$ go قم بتشغيل delete_table.goيوضح الإخراج التالي أن 3 بحث وتطوير تم حذف سجل جدول 'الأعضاء' بنجاح. تتم طباعة رسالة النجاح 'تم حذف السجل بنجاح' في الجهاز:
يمكنك تسجيل الدخول إلى SQLite للتحقق مما إذا كان قد تم حذف أي سجل لجدول الأعضاء أم لا.
قم بتشغيل الأمر التالي لتشغيل SQLite بقاعدة بيانات “test.db”:
اختبار sqlite3 $. dbقم بتشغيل استعلام SELECT التالي لقراءة كل محتويات جدول 'الأعضاء':
sqlite3> تحديد * من الأعضاء ؛يوضح الناتج التالي أن قيمة 3 بحث وتطوير يتم حذف سجل جدول الأعضاء بعد تنفيذ البرنامج النصي ويتم طباعة السجلين الآخرين في الإخراج:
خاتمة
تشتهر كل من SQLite و Golang الآن ببساطتها وخفة وزنها. يمكن تنفيذ أي تطبيق بسيط قائم على قاعدة البيانات بسهولة باستخدام هذه الأدوات. الجزء الأكبر من أي تطبيق هو تنفيذ عملية CRUD. تم شرح طرق تنفيذ عملية CRUD باستخدام برنامج Golang النصي وقاعدة بيانات SQLite في هذا البرنامج التعليمي باستخدام ملفات Golang المتعددة. إذا كنت متعلمًا جديدًا للغة Go وقاعدة بيانات SQLite ، فسيساعدك هذا البرنامج التعليمي على تعلمهما من الأساسيات.