إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

سلسلة رقم 1 شرح بالتفصيل لقواعد البيانات سكيوليت Sqlite

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • سلسلة رقم 1 شرح بالتفصيل لقواعد البيانات سكيوليت Sqlite







    شرح قواعد البيانات سكيوليت SQL databases

    السلسلة رقم 1




    هي لغة قياسية للوصول إلى قواعد البيانات و التعامل مع قواعد البيانات

    وهى تستخدم أحد مقاييس ANSI “ مؤسسة المقاييس القومية الأمريكية” وهناك العديد من الإصدارات المختلف لـــ لغة سكيوليت



    ماذا يمكن أن تفعل بإستخدام الــ سكيوليت ؟

    يمكن تنفيذ إستعلامات من قواعد البيانات
    يمكن أن تسترجع البيانات من قواعد البيانات
    يمكن إدراج سجلات فى قواعد البيانات
    يمكن تحديث السجلات فى قواعد البيانات
    يمكن حذف السجلات من قواعد البيانات
    يمكن إنشاء قواعد بيانات جديدة
    يمكن إنشاء جداول جديدة فى قواعد البيانات
    يمكن إنشاء إجراءات تخزينية فى قواعد البيانات
    يمكن إنشاء طرق عرض أو عروض فى قواعد البيانات
    يمكن تعيين الأوذونات على الجداول والإجراءات و طرق العرض أو العروض


    أولا : كيفية بناء الجمل فى قواعد بيانات السكيوليت


    لتكوين الجمل فى قواعد البيانات إليك بعض الكلمات والتى تعبر عن أفعال سوف تتم عند إستخدامها مع قواعد البيانات

    سكيوليت مثل
    (SELECT, UPDATE, DELETE, INSERT, WHERE)

    قاعدة البيانات في معظم الأحيان تحتوي على جدول واحد أو أكثر. يتم تعريف كل جدول بواسطة اسم يعطى له

    والجداول تحتوى على البيانات فى سجلات وهى الصفوف (Rows)



    فعلى سبيل المثال لتوضيح ما سبق نأخذ ما تعرضة الصورة التالية :




    مبدئيا أى جدول لابد و أن تضع له إسم معرف له كى تستطيع أن تستدعي منه أى بيانات تريدها وحتى تستطيع تمييز الجداول

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

    الجدول يحتوى على صفوف (ROWS) و أعمدة (Columns)


    طبعا الصفوف هى كل ما هو أفقى بخط مستقيم

    و أيضا الأعمدة هى كل ما هو رأسى بخط مستقيم





    * نضع فى إعتبارنا أن سكيوليت ليست حساسة لحالة الأحرف *



    يمكن تقسيم تصريحات السكيوليت إلى قسمين و هما :


    _ إستعلام وتحديث التعليقات يشكل جزء من السكيوليت (DML)

    التعليقات أو التصريحات الأكثر أهمية هى كالتالى :

    “SELECT” وهى تستخلص البيانات من قاعدة البيانات
    “ UPDATE” وهى لتحديث البيانات داخل قاعدة البيانات
    “ DELETE” وهى لحذف بيانات من داخل قاعدة البيانات
    “ INSERT INTO” وهى لإدخال بيانات إلى قاعدة البيانات

    _ رخص إنشاء أو حذف قوائم من قاعدة البيانات (DDL) هى تعرف أيضا بالفهارس (key)
    لتحديد الروابط بين الجداول وتفرض قيود بين الجداول


    التعليقات أو التصريحات الأكثر أهمية هى كالتالى :

    “ CREATE DATABASE”
    وهى لإنشاء قواعد بيانات
    “ ALTER DATABASE” وهى تعدل قواعد البيانات
    “ CREATE TABLE” وهى لإنشاء جداول
    “ ALTER TABLE” وهى لتعديل جداول
    “ DROP TABLE” وهى لحذف جداول
    “ CREATE INDEX” وهى لإنشاء فهرس (مفتاح البحث)
    “ CREATE INDEX” وهى لحذف فهرس



    فكما ذكرنا سابقا أن اللغة ليست حساسة لحالة الأحرف “ select “ أو “ SELECT “





    أولا : التعليق أو التصريحأ “ SELECT “ سوف يكون هناك طريقتان لكتابة هذا التصريح كما هو موضح بالأسفل :




    SELECT column_name(s) FROM table_name

    SELECT * FROM table_name



    نأخذ مثالا لتوضيح الفرق بين الإثنين فنحن نريد من الجدول التالى أن نستخلص منه معلومات الأعمدة “الإسم الأول” و “الإسم الأخير” .... “ FirstName و LastName”





    الشــــــــرح كما يلى :

    بالنسبة للتصريح الأول و الذى كان “SELECT column_name(s) FROM table_name” الشرح كالتالى :


    أولا كما ذكرنا سابقا أن select هى لإستخلاص بيانات من قاعدة البيانات

    ثانيا كلمة column_name

    وهى تعبر عن بيان العمود المراد إستخلاص بياناته بمعنى إسم العمود فإن كان أكثر من عمود نريد أن نستخلص بياناته

    فإننا قمنا فى الإسم السابق الذى كان (column_name(s حيث حرف s يعبر عن أنه قد يكون هناك أكثر من عمود
    وبالتالى سوف يتم كتابة الأعمدة أو بمعنى أصح أسماء الأعمدة المراد الإستعلام عنها فى قاعدة البيانات بجوار بعضهما مع الفصل بينهم بفاصلة ,
    و التى نطلق عليها وا بالعربى


    ثالثا كلمة FROM تعنى من

    رابعا كلمة
    table_name وهى إسم الجدول المراد إستخلاص البيانات منه



    ** إذن إذا كنا نريد أن نستخلص أو نستعلم عن البيانات

    “ FirstName و LastName”لعمود الإسم الأول و عمود الإسم الأخير

    سوف يكون التصريح الكامل لعمل هذه المهمة كالتالى :




    SELECT LastName,FirstName FROM Persons

    ** طبعا على إفتراض أن قمت بتسمية الجدول بإسم Persons


    فيكون نتيجة الإستدعاء الذى قمت بتحديدة وحصرة بين الإسم الأول و الإسم الأخير كالتالى فى المستعرض والذى سوف أعبر عنه بقيمة متغير مثلا فيكون كالتالى :





    بالنسبة للتصريح الثانى و الذى كان “ SELECT * FROM table_name” الشرح كالتالى :

    أولا كما ذكرنا سابقا أن select هى لإستخلاص بيانات من قاعدة البيانات

    العلامة النجمية (*) هي طريقة سريعة لتحديد كافة الأعمدة ثانيا

    ثالثا كلمة FROM تعنى من

    رابعا كلمة table_name وهى إسم الجدول المراد إستخلاص البيانات منه


    إذن إذا كنا نرد أن نستخلص أو نستعلم عن كافة بيانات الأعمدة بالكامل سوف يكون التصريح الكامل لهذة المهمة كالتالى :



    SELECT * FROM Persons

    **طبعا على إفتراض أن قمت بتسمية الجدول بإسم Persons

    فيكون نتيجة الإستدعاء هو كامل محتويات بيانات كافة الأعمدة من قاعدة البيانات المحددة مسبقا






    الآن نتجه نحو برنامج الأتوبلاى ميديا ستوديو لتطبيق ما سبق عمليا مع مراعاه تنشيط الإضافة سكيوليت وهى من النوع أكشن بليجين طبعا للتنشيط للإضافة

    ثم يتم وضع علامة صح أمام إسم الإضافة
    .........<...Project.........>...Plugins






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

    نقوم بإدراج زر ونقوم بكتابة إسم له و ليكن حفظ على سبيل المثال و سوف تكون مهمته هو تسجيل البيانات التى سوف يستقبلها من إينبوت الإدخال

    مبدئيا سوف نتعامل مع قاعدة بيانات أليس كذلك ؟

    نعم سوف نتعامل مع قاعدة بيانات إذن هل هى موجودة أم لا ؟

    إذا كانت غير موجودة إذن علينا أن ننشئها أليس كذلك ؟

    نعم سوف نقوم بإنشائها إن لم تكن موجودة وإن كانت موجودة علينا أن نعرف مسارها التى هى موجودة فيه أليس كذلك ؟


    فى هذا المثال سوف نحدد أن تكون قاعدة البيانات داخل مجلد الدوكس داخل المشروع وذلك على سبيل المثال

    ومن هنا لإنشاء قاعدة بيانات جديدة أو فتح قاعدة بيانات موجودة سوف نستخدم أمر من أوامر الإضافة سكيوليت وهو
    SQLite.Open

    عند إدراجة سوف تظهر هذه النافذة كما هو موضح بالصورة التالية :





    وفيها يكون مسار قاعدة البيانات المراد إنشائها أو فتحها حتى نستطيع أن نتعامل معها و يكون المسار فى السطر الأول من الصورة

    والذى يعبر عنه فى الصورة بالمتغير Filename قم بحذف هذا المسار والذى كان إفتراضيا بهذا الشكل
    كود:
    “C:\\MyFolder\\MyDatabase.db”
    وقم بكتابة مسار فولدر الدوكس والذى سوف يكون كالتالى
    كود:
    “AutoPlay\\Docs\\data.db”
    حيث أنه من المعروف أن كلمة data هى إسم إفتراضى منى أنا على سبيل المثال

    ولكى أوضح لك أن هذا الإسم يمكن تغييرة كما تريد و سوف يكون هو إسم قاعدة البيانات

    وطبعا “.db” هو إمتداد قاعدة البيانات حيث يوضح أن قاعدة البيانات سوف تكون من النوع داتا باس

    كما هو موضح بالصورة السابقة المتغير الثانى فى الصورة والذى يعبر عنه الأمر بـــ ResultVariable سوف يكون إفتراضيا result

    نقوم بإعادة تسميته لمتغير على سبيل المثال سوف يكون db مع أخذنا فى الإعتبار أنه يمكنك إختيار كتابة أى متغير آخر فهذا على سبيل المثال فقط



    وبعد إتمام مراحل كتابة مسار قاعدة البيانات و إسم متغير مناسب سوف يكون الكود النهائى بعد الضغط على زر فينيش كالتالى :

    كود:
    db = SQLite.Open(“AutoPlay\\Docs\\data.db”);
    نعود و نذكر إن لم تكن قاعدة البيانات موجود سوف يتم إنشائها أوتوماتيكيا

    عن طريق الكود السابق الذى قمنا بإدراجة أصبح لدينا ملف لقاعدة البيانات و لم يتم التعامل مع القاعدة بعد

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

    نعود إلى التكلم عن ما ذكرناه سابقا ولكن على طريقة الأتوبلاى ميديا ستوديو من خلال إضافة السكيوليت التى نستخدمها حاليا لذلك سوف نستخدم أمر للتعامل مع الجداول و سوف يكون هو كالتالى :
    SQLite.Query


    التالية ينفذ استعلام على قاعدة بيانات SQLite عند إدراجة سوف تظهر هذه النافذة كما هو موضح بالصورة :




    وفيها يكون dbHandle هو متغير ثابت موجود فى الأمر كما هو موضح أما المتغير الإفتراضى و الذى يكون db

    فيمكن تغييرة كما نريد شرط أن يكون مطابقا تماما للمتغير الذى إستعملناه فى إنشاء أو فتح قاعدة البيانات والذى كان يعبر عن فتح قاعدة البيانات

    وعلى ذلك فإن خلاصة التعبير عن المتغير هذا هو الهاندل أو مقبض قاعدة البيانات التى سوف نتعامل معها

    كلمة
    Query هى أيضا متغير سابق ثابت يتم فية كتابة طريقة الإستعلام التى نريدها من حيث تحديد نوع الإستعلام

    من ناحية هل سوف يكون إنشاء جدول أو التعديل على جدول أو حذف جدول أو ....

    وأعيد و أكرر حيث أننا سوف نتعامل مع جدول إذن نحن نعرف أى جدول سوف نتعامل معه حيث سوف نفرق بينهم بالأسماء

    كما أننا لابد أن نعبر عن ملامح هذا الجدول الذى نريد أن نتعامل معه من ناحية التخطيط المبدئى له

    حيث هنا سوف نحدد له الكوليمات
    “ Columns” طبعا بمعنى الأعمدة كما ذكرنا سابقا

    وأكيد أيضا طالما حددنا أعمدة لابد و أن نحدد لها أسماء كى نستطيع أن نتعامل مع الأعمدة من خلال معرفة إسم العمود المراد التعديل أو إنشاؤه أو حذفة أيضا كما ذكرنا سابقا

    كلمة
    CallbackFunction يوضع لها دوال يمكن من خلالها على سبيل المثال متابعة عملية التسجيل فى قاعدة البيانات

    وليست ذات أهمية فيمكن إهمالها و شطب كلمة
    nil و بهذا لن ثؤثر على الكود و لن تظهر فى الكود بعد إدراجة فيصبح

    الكود النهائى كالتالى على سبيل المثال :


    كود:
    SQLite.Query(db, “create table abood(P_Id integer primary key, LastName text, FirstName text, Address text, City text)”);
    طبعا هذا الكود السابق يرسم الطريقة التى سوف نسجل بها جدول فى قاعدة بيانات و أوضح لكم محتويات الكود مرة أخرى

    db هو الهاندل لقاعدة البيانات التى نتعامل معها أو بمعنى أصح المقبض لقاعدة البيانات

    كل ما هو داخل علامتى التنصيص هو مخطط بناء لجدول إسمه عبود
    abood هذا هو الإسم الذى إخترته أنا للجدول

    الذى سوف نقوم بإنشاؤة وهنا أنا قلت أننا سوف ننشئ جدول حيث أننى إستخدمت كلمة
    create


    هل نحن متفقين على ما سبق ؟

    نعود إلى الكود مرة أخرى سوف نجد مكونات الجدول تم وضعها أنظر إلى الكود بالتفصيل الممل

    و أيضا نجد كلمة P_Id هى نص أو إسم للعمود الأول وهو الفهرس

    وباقى أسماء الأعمدة المراد إنشاؤها سوف تجدها أيضا داخل الكود


    *** تذكير سريع لإجمالى ما سبق شرحة من أكواد كان كالتالى :

    كود:
    --
    db = SQLite.Open(“ AutoPlay\\Docs\\data.db”);
    SQLite.Query(db, “create table abood(P_Id integer primary key, LastName text, FirstName text, Address text, City text)”);

    وصف سريع لما سوف يقوم به الكود هو إنشاء ملف قاعدة البيانات إن لم تكن موجودة و فتحها و بذلك يكون لها هاندل أو مقبض نظرا لأن الكود قام بالفتح ثم بعد ذلك يقوم برسم الهيكل المفترض ---
    و إنشاء 5 أعمدة منها عمود الفهرس و الإسم الأخير و الإسم الأول والعنوان والمدينة لجدول إسمة abood كما طلبنا من الكود بالضبط


    إلى هنا إنتهت مرحلة شرح إنشاء قاعدة البيانات ولم نحفظ بعد فى قاعدة البيانات لذلك تابع معى

    قمنا سابقا بوضع مجموعة من الإينبوت و زر للحفظ داخل مشروع الأتوبلاى ميديا ستوديو وذلك بغرض

    التطبيق الفعلى على حفظ البيانات داخل جدول داخل ملف قاعدة البيانات ومن هذا المنطلق نجد أن

    للحصول على ما يكتب داخل الإينبوت يكون الكود النهائى على سبيل المثال كالتالى :


    كود:
    --
    N_lastname = Input.GetText(“Input1”);
    N_firstname = Input.GetText(“Input2”);
    N_address = Input.GetText(“Input3”);
    N_city = Input.GetText(“Input4”);
    طبعا تم وضع متغير إفتراضى على سبيل المثال لحفظ ما يتم كتابتة فى كل إينبوت فى هذا المتغير

    *** إذن سوف يكون السؤال هنا نحن أنشأنا أو فتحنا ملف قاعدة البيانات المراد التعامل معها و أيضا قمنا
    برسم تخطيطى للجدول المراد التعامل معه و قمنا بإيجاد ما هو مكتوب فى كل إينبوت
    ما هو شكل الكود لــ زر الحفظ إذن ؟


    الجواب هو أنه كما قلنا سابقا سوف يكون هو نفس كود الإستعلام السابق SQLite.Query و لكن بتحديد مهمة العمل للكود فبدلا من إنشاء جدول سوف يكون إدخال إلى جدول تذكر معى التعليق أو التصريح الذى قلته سابقا وهو “ INSERT INTO” فيصبح الكود بنفس التفصيل السابق مع تغيير طفيف وهو كلمة او تعليق أو تصريح التعامل بالإدخال أو الإدراج فى الجدول

    فيكون الكود كالتالى :



    كود:
    SQLite.Query(db, “insert into abood values(NULL, ‘”..N_lastname..”’,’”..N_firstname..”’,’”..N_address..”’,’”..N_city..”’)”);

    نلاحظ فى الكود تصريح الإدخال أو الإدراج للجدول المسمى بــ عبود أيضا كلمة Values أى أننا

    نعلم المترجم أننا سوف ندخل أو ندرج مجموعة من القيم لإدراجها أو إدخالها فى القوائم الهيكلية السابق إنشاؤها عند إنشاء الجدول فى البداية

    هذه القيم تتمثل فى متغيرات المتحصلة مما يكتب فى الإينبوت وطبعا المتغير معبر فعلا عن قيم أو نصوص أو ما شابه مما يكتب داخل الإينبوت

    نلاحظ أيضا وجود كلمة
    NULL يفضل تركها كما هى وهى معبرة عن الفهرس كما تتذكرون معى

    وعند تركها كما هى فسوف يأخذ الفهرس التسلسل الطبيعى له دون تدخل منك


    إلى هنا كل شيئ تم ذكرة واضح جدا و بالتفصيل الممل

    **** إجمالى الأكواد المستخدمة والتى سوف نضعها بالكامل داخل زر الحفظ كالتالى :


    كود:
    --
    db = SQLite.Open(“AutoPlay\\Docs\\data.db”);
    
    SQLite.Query(db, “create table abood(P_Id, LastName text, FirstName text, Address text, City text)”);
    
    N_lastname = Input.GetText(“Input1”);
    N_firstname = Input.GetText(“Input2”);
    N_address = Input.GetText(“Input3”);
    N_city = Input.GetText(“Input4”);
    
    SQLite.Query(db, “insert into abood values(NULL, ‘”..N_lastname..”’,’”..N_firstname..”’,’”..N_address..”’,’”..N_city..”’)”);
    مثال تطبيقى على ما سبق كملف مفتوح المصدر apz :


    [hide]تعليم السكوليت لحفظ البيانات1[/hide]




    مرحلة إستدعاء البيانات المخزنة

    مبدئيا لإستدعاء البيانات يجب أن يكون الهاندل أو المقبض لملف قاعدة البيانات مفتوح لذلك وجب التنبية على ضرورة فتح
    المقبض لقاعدة البيانات حتى تتم عملية الإستدعاء بطريق صحيحة بدون مشاكل ولذلك علينا إما تكرار فتح مقبض قاعدة البيانات عند إجراء عملية الإستدعاء فنحن لا ندرى متى سوف نستدعى البيانات للإطلاع عليها ربما نريد أن نفتح العمل بعد إنهاؤه لمجرد الإطلاع فقط دون تسجيل جديد كما فعلنا سابقا أو الخيار الآخر وهو وضع كود فتح مقبض ملف قاعدة البيانات فى الحدث أون ستارت أب فى بداية تشغيل المشروع
    سوف نستخدم الكود التالى :


    SQLite.QueryToTable

    عند إدراج هذا الكود فى المشروع سيكون كالتالى على سبيل المثال :
    كود:
    SQLite.QueryToTable(db, "select * from abood");
    الشرح تم توضيحه فى الأكواد السابقة المشابهة لهذا الكود
    هذا الكود سيعمل على تنفيذ إستعلامات على قاعدة البيانات والتى تحتوى على جدول إسمة عبود وسوف تخزن نتيجة الإستعلام
    فى متغير على هيئة تيبل أو جدول بمعنى أن المتغير سيحتوى على مجموعة من البيانات
    وفى حالة حدوث خطأ سوف يكون قيمة الإسترجاع فى المتغير تساوى نيل
    nil أما إذا تم الإجراء بنجاح دون أخطاء فسوف يكون الإرجاع فى الجدول كالتالى :

    Rows: وهو عدد الصفوف فى نتيجة الإستعلام

    Columns: وهو عدد الأعمدة فى نتيجة الإستعلام

    ColumnNames: وهو جدول مفهرس رقميا يحتوى على أسماء الأعمدة فى نتيجة الإستعلام

    Use .ColumnNames[<column_number>] to get the name of a column

    فمثلا للحصول على إسم العمود الثالث يكتب كالتالى :


    كود:
    tbResult.ColumnNames[3] ;
    Data: هو جدول يحتوي على البيانات التي تم إرجاعها بواسطة الاستعلام. ويتم تنظيم البيانات في جداول فرعية، واحدة لكل صف في نتيجة الاستعلام
    يحتوي كل فرع جدول البيانات من صف واحد، فهرستها من قبل اسم العمود.


    Use .Data[<row_number>] to access a row of data:

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

    كود:
    tbResult.Data[2];
    ثم يتم إستخدام إسم العمود للوصول إلى قيمة الخلية كالتالى :

    كود:
    tbRow2["LastName"];
    أو يتم أستخدام[ رقم الخلية][ إسم العمود] وذلك للوصول إلى قيمة الخلية مباشرة كالتالى :
    كود:
    tbResult.Data[2]["LastName"];
    مثال على ذلك :
    كود:
    --
    s=SQLite.QueryToTable(db, "select * from abood");
    Input.SetText("Input1", s.Data[1]["LastName"]);
    فى المثال السابق تم الإستعلام عن جدول إسمه عبود
    وتم عرض نتيجة فى الإينبوت وهى معرفة
    الإسم الأخير للعمود رقم 1 فى الجدول


    *** إذن نأخذ مثال مفتوح apz للتطبيق العملى


    طبعا هذا المثال هو تطبيق للجدول المحفوظ سابقا والذى يتم الشرح عليه و هذا تذكير به فى الصورة التالية :



    أترككم مع تحميل المثال المفتوح


    [hide]تعليم السكوليت لحفظ البيانات 2[/hide]




    [caution]حسب المتابعة سيتم طرح المزيد من الشروحات هذا إن كان أسلوبى فى الشرح واضح طبعا أنا أنتظـــــــر النقد و التصحيح و التوجيه فى حالة و جــــــود أخطاء فى الشرح و التوضيح[/caution]




    سلسلة رقم 2 شرح بالتفصيل لقواعد البيانات سكيوليت Sqlite

    سلسلة رقم 3 شرح بالتفصيل لقواعد البيانات سكيوليت Sqlite

    سلسلة رقم 4 شرح بالتفصيل لقواعد البيانات سكيوليت Sqlite


    التعديل الأخير تم بواسطة عبود عبود; الساعة 15-02-2016, 08:13 PM. سبب آخر: تحديث روابط ظهور صور الشرح

  • #2
    عطاء منقطع النظير ... و ايصال المعلومة كاملة منسقة
    تلك العناوين التي تميز الأخ الكريم
    الله يجازيك كل خير و يوفقك في كل أعمالك

    بارك الله فيك

    أبدعت في الشرح و الاختيار

    تعليق


    • #3
      مشكووووووورييين

      تعليق


      • #4
        رائع أخي عبود وجميل منك هذا الدرس جزاك الله خيرا
        هذا مانحتاج اليه
        شكرا جزيلا أخي

        تعليق


        • #5
          جزاك الله خيرا اخانا عبود على هذا الشرح الرائع السهل

          تعليق


          • #6
            بسم الله الرحمن الرحيم

            ماشاء الله أستاذ عبود شرح مميز ورائع جدا
            بالتأكيد هو انجاز يحسب لك اعتبارا لآهمية مسألة قواعد البيانات من جهة
            وأخرى لندرة وجود شروحات عربية لها بالشبكة.

            ان شاء الله يتم جمع السلسلة في كتاب الكتروني مميز تقديرا لجهودكم
            فاحرص على نفس التسلسل .

            جزاكم الله كل خير ونفع بكم

            وفقكم الله

            تعليق


            • #7
              مشكور اخى عبود

              ولكن يا ريت اخى تعمل لنا شرح فلاشى او فييو
              يضح انشاء الشروع من بدايته ويكون مرجعا لكل المبرمجين بالاوتو بلاى

              حاول اخى

              تعليق


              • #8
                رائع أخي الأمير .. ما شاء الله عليك متى يتوفر لي الوقت سأراجع الموضوع بعنايه

                تعليق


                • #9
                  جزاك الله خيرا اخانا عبود

                  :teslam:

                  ماشاء الله شرح رائع ومميز سيكون مرجعا لنا ان شاء الله

                  تعليق


                  • #10
                    أشكركم جميعا على هذا المرور العطــــــر
                    بارك الله فيكم و أتمنى لكم التوفيق و أتمنى أن أستطيع أن أقدم ما يمكن أن يفيدكم

                    تحياتى لكم جميعا إخوانى

                    تعليق


                    • #11
                      بارك الله فيك اخى الأمير

                      لكن على ما يبدو لديك مشكل فى إنشاء الجداول

                      كود PHP:
                      SQLite.Query(db“create table abood(P_IdLastName textFirstName textAddress textCity text)); 
                      لا أعلم مدى صحة عدم تعريف الحقل الأول الذى أسميته P_Id وهو بالقطع حقل المفتاح الأساسى
                      أعتقد هنا خطأ
                      يجب أن يعرف حقل المفتاح بالعبارة integer primery key
                      حتى تعتبرها السيكوال حقل المفتاح (الترقيم التلقائى الفريد الغير متكرر و أيضا الغير معوض بالحذف )
                      عموما لا أعتقد أنه من الصحيح ترك أى حقل بدون تعريف
                      بالتوفيق
                      التعديل الأخير تم بواسطة النصل القاطع; الساعة 21-04-2013, 04:30 AM.

                      تعليق


                      • #12
                        جزاك الله خيرا اخانا عبود

                        تعليق


                        • #13
                          المشاركة الأصلية بواسطة النصل القاطع مشاهدة المشاركة
                          بارك الله فيك اخى الأمير

                          لكن على ما يبدو لديك مشكل فى إنشاء الجداول


                          لا أعلم مدى صحة عدم تعريف الحقل الأول الذى أسميته P_Id وهو بالقطع حقل المفتاح الأساسى
                          أعتقد هنا خطأ
                          يجب أن يعرف حقل المفتاح بالعبارة integer primery key
                          حتى تعتبرها السيكوال حقل المفتاح (الترقيم التلقائى الفريد الغير متكرر و أيضا الغير معوض بالحذف )
                          عموما لا أعتقد أنه من الصحيح ترك أى حقل بدون تعريف
                          بالتوفيق
                          على العكس تماما أخى فهذا التعبير الذى إسمة integer primery key هو مجرد وصف لما سوف يكون فى هذه الخانة وهو الفهرس لذلك بما إنى أنا أريد إنشاء جدول خاص بى " وكان هذا مقصود منى حتى أبسط للجميع عدم التقييد نهائيا "

                          فليس على الإلتزام بالنص السابق و إنما أضع النص الذى أريد دون تقييد نهائيا فقد قمت بالتعويض عنه بالإسم P_Id .


                          هكذا أريد مثل هذه النقاشات لتبادل أو إصلاح معلومة لدى فإما أن تقنعنى و إما أن تقتنع أنت

                          شكرا جزيلا أخى خالد لهذا المرور الجميل و التعليق الرائع.

                          تعليق


                          • #14
                            بارك الله فيك يا أخي ..

                            لم تترك لنا شاردة وواردة إلا أوضحتها في شرحك


                            لا حرمك الله الأجر

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
                              على العكس تماما أخى فهذا التعبير الذى إسمة integer primery key هو مجرد وصف لما سوف يكون فى هذه الخانة وهو الفهرس لذلك بما إنى أنا أريد إنشاء جدول خاص بى " وكان هذا مقصود منى حتى أبسط للجميع عدم التقييد نهائيا "

                              فليس على الإلتزام بالنص السابق و إنما أضع النص الذى أريد دون تقييد نهائيا فقد قمت بالتعويض عنه بالإسم P_Id .


                              هكذا أريد مثل هذه النقاشات لتبادل أو إصلاح معلومة لدى فإما أن تقنعنى و إما أن تقتنع أنت

                              شكرا جزيلا أخى خالد لهذا المرور الجميل و التعليق الرائع.
                              لم تقرأ مشاركتى جيدا
                              ذكرت بالنص
                              يجب أن يعرف حقل المفتاح بالعبارة integer primery key
                              أنا لم أقل لك "لابد أن يسمى" بل قلت "يجب أن يعرف" فماذا نفهم من ذلك ؟؟ نفهم الآتى :-
                              أنا لم أعترض على التسمية P_Id
                              أنا أعترضت على عدم التعريف
                              بداية أجب على هذا السؤال :- لم قمت بإنشاء الجدول ؟؟
                              لو كانت إجابتك هى " أنشأت الجدول لأشاهد جماله و أتفرج على حقوله الفارغة الناصعة البياض كالثلج" فأنصحك بعدم متابعة قراءة هذه المداخلة و تجاهل مداخلتى السابقة
                              أما لو كنت تنوى تعبئة الجدول ببيانات لتستفيد من الجدول فعليك هنا أن تتحملنى قليلا (ربما كثيرا) و تقرأ باقى المشاركة

                              بسم الله نبدأ
                              أنت تقول أن integer primery key مجرد وصف ؟؟؟؟؟
                              من قال لك ذلك ؟؟؟؟؟
                              أخى العزيز حاول أن تخرج هذا المفهوم الخطأ من ذهنك سريعا سريعا
                              و بعيدا عن الإستنتاجات و التصورات إليك الحقائق
                              integer primery key ليس وصف بل تعريف مسبق تفهمه السيكوال جيدا و بناء عليه تنشئ الفهرس
                              integer تعنى عدد صحيح موجب
                              primery key تعنى ترقيم تلقائى تصاعدى لا يقبل التكرار و لا يحل محله رقم مشابه حتى لو حذف مسبقا

                              فليس على الإلتزام بالنص السابق و إنما أضع النص الذى أريد دون تقييد نهائيا فقد قمت بالتعويض عنه بالإسم P_Id
                              بل عليك الإلتزام حرفيا (وفقا لما ذكرت أن الحقل هو فهرس) و حتى لو لم يكن فهرس فلابد أيضا من تعريفه
                              و للمرة الثانية صحح فى ذهنك فكرة أن P_Id قد عوضت عن integer primery key فلا يمكن للإسم أن يعوض عن التعريف
                              عفوا فهما مختلفان جذريا
                              و فعلا أنت تجاهلت القواعد عندما تجاهلت تعريف الحقل بكل بساطة
                              و كذلك فأيضا و بكل بساطة ستتجاهلك السيكوال و تنشئ لك حقلا فارغا غير معرف و غير قابل لإدراج أى نوع من البيانات
                              بل الأسوأ من ذلك
                              لن تتمكن من وضع أى بيانات فى الجدول كله لو بدأت الأمر insert بملئ هذا الحقل المجهول النسب و الهوية
                              هنا قاعدة
                              إن تجاهلت قواعد السيكوال فسوف تتجاهل السيكوال أوامرك
                              وكان هذا مقصود منى حتى أبسط للجميع عدم التقييد نهائيا
                              كنت أتمنى ذلك و لكن بكل أسف الجميع مضطرين للتقيد كليا و حرفيا بالقواعد (هذا إن أرادوا لأكوادهم أن تعمل)
                              ملخص القول
                              سواء كان الحقل فهرس أم لا ... نص أم رقم ......... لا يهم
                              المهم هو وضع تعريف الحقل بجوار الحقل و قبل وضع الفاصلة

                              هكذا أريد مثل هذه النقاشات لتبادل أو إصلاح معلومة لدى فإما أن تقنعنى و إما أن تقتنع أنت
                              أتفق معك حتى كلمة إصلاح المعلومة
                              أما الإقناع و الإقتناع فلا يكون بمناقشة الثوابت
                              الثوابت لا تقبل النقاش (ئؤدى لجدل)
                              عدا ذلك المناقشة مفتوحة

                              ومنعا للجدل و لإنهاء تلك النقطة
                              حاول عمل insert فى هذا الجدول و خبرنى
                              هل تمكنت من تعبئة الحقل P_Id بأية بيانات ؟؟
                              لو تمكنت فضع لى ملفا مفتوحا للتوضيح فربما لم أحسن فهم وجهة نظرك
                              تقبل تحياتى
                              التعديل الأخير تم بواسطة النصل القاطع; الساعة 21-04-2013, 06:07 PM.

                              تعليق

                              مواضيع تهمك

                              تقليص

                              المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                              المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                              المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                              المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                              المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                              يعمل...
                              X