اذهب إلى المحتوى
  • 0

تصدير قاعدة البيانات Sqlite كاملة في ملف خاص و اعادة استيرادها

Mostafa Ougrouti

السؤال

اعمل على تطبيق قاعدة بيانات Sqlite  بالاندرويد ستوديو بلغة الجافا ،  حيث يمكن للمستخدم تصدير بياناته  في ملف خارجي عن التطبيق ثم اعادة استيراده منه وقت الحاجة ، لانني لاحظت كل ما قام المستخدم بتحديث التطبيق يتم مسح قاعدة البيانات القديمة بجميع بياناتها ، وهذا مشكل مزعج جداً

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

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

دعنا نصف المشكلة:

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

إذًا ما المشكلة؟

المشكلة تكمن عندما يتعامل التطبيق مع ملفات أخرى مثل قواعد البيانات، فسنجد أن الإصدار الأول من التطبيق يتعامل مع قواعد بيانات تحتوي على عدد محدود من الجداول (وليكن 5 جداول)، ولكن مع الإضافات الجديدة سنحتاج إلى إضافة جداول أخرى (وليكن 3 جداول جديدة فيصبح الإجمالي 8 جداول).

هنا تكمن المشكلة،

لأن المستخدمين الحاليين قد أضافوا بيانات على قواعد البيانات (ذات الخمس جداول) وبالتالي لا يمكن حذف هذه القواعد وتنزيل القاعدة الجديدة (ذات الثمان جداول).

فما الحل؟

سأذكر لك الخطوات العامة لأي تطبيق مهما كان نوعه سواء تطبيق أندرويد أو تطبيق ويندوز أو ماك، هذه الخطوات يجب اتباعها

أولًا: بالنسبة للتطبيقات التي لا تقوم بحذف قواعد البيانات:

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

ثانيًا: بالنسبة للتطبيقات التي تحذف قواعد البيانات مع كل تحديث:

إذا استطعنا تعطيل خاصية حذف الملفات مع التحديث عن طريق التحكم في خصائص التطبيق بملف الخصائص مثل gradle.properties كأن نضيف السطر التالي:

android.builder.sdkDownload=false

أو بأي طريقة تراها مناسبة على حسب التطبيق الذي تقوم به.

فإذا فعلت هذا، اتبع التعليمات المذكورة سابقًا (بالنقطة أولاً).

أما إذا لم تتمكن من تعطيل هذه الخاصية فيتوجب عليك قبل تحديث التطبيق أن تأخذ نسخة احتياطية من قواعد البيانات، وبعد التحديث، تحذف قواعد البيانات الجديدة التي نزلت حالًا مع التحديث، ثم تقوم باستعادة النسخة الاحتياطية ثم تقوم بإضافة التغييرات الجديدة عليها بعد الاسترجاع (أي إضافة الثلاث جداول الجديدة).

بالتأكيد الموضوع متقدم، ويحتاج بحثًا وجهدًا، ولكن هذه الخطوط العامة التي يجب وضعها بالحسبان، والتي اكتسبناها على مدار سنوات خبرتنا بالبرمجيات وكنا نعاني كثيرًا من هذه النقطة، ولم تكن البرمجيات تقدمت بعد (أتحدث عن بدايات الألفينات).

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكراً استاذ  El Sayed El Tohamy

شكراً على ، الاهتمام و الطرح المتميز ، و المعلومة الهامة التي قدمتها لنا ، فعلاً تم حل المشكل بفضلكم و توجيهاتكم ،قمت بإجراء بعض التغييرات و بالاضافة الى السطر الخاص بـ "gradle.properties" 

شكراً استاذ مرة اخرى تمنياتي لك بالتوفيق 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...