database - tutorial - sqlite androidhive




هل يمكنني تنزيل SQLite db على/sdcard والدخول إليه من تطبيق Android الخاص بي؟ (4)

أشارك التعليمة البرمجية التالية. أعلن opcionesMenu Vector<String>

Vector < String > opcionesMenu = new Vector< String >();
// the database is SDCard. I saw  the code to Blackberry (net.rim)
String rutaDB = "/storage/extSdCard/Android/databases/Offshore.db";


    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(rutaDB, null);

    Cursor cursor = db.rawQuery("SELECT Codigo, Nombre FROM Ruta ORDER BY Codigo, Nombre", null);

    if (cursor.moveToFirst())
    {
        do
        {
            opcionesMenu.add(cursor.getString(0) + " - " + cursor.getString(1));
        } while(cursor.moveToNext());
    }

    db.close();

لقد وجدت بالفعل أنه لا توجد طريقة لتجميع الملفات في .apk وجعلها على / sdcard ، الخيار الأفضل حتى الآن لتحميل الملفات الكبيرة عند التشغيل لأول مرة. جئت عبر برنامج تعليمي يقول كيفية تجميع db sqlite مع apk ثم نسخها بحيث يمكن الوصول إليها مع SQLiteDatabase (وبالتالي مضاعفة المساحة المطلوبة ، وعدم استخدام / sdcard على الإطلاق).

http://developer.android.com/guide/topics/data/data-storage.html#db تقول أن جميع قواعد البيانات يجب أن تكون في / data / data / package_name / databases.

هل هذا حقا؟ هل هناك طريقة لخداع الإطار في فتح قاعدة البيانات التي يتم وضعها على قسم / sdcard؟ هل هناك طريقة لاستخدام مجمع جافا سكليتي / إطار آخر للوصول إلى قواعد البيانات هذه؟

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


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

File dbfile = new File("/sdcard/mydb.sqlite" ); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
System.out.println("Its open? "  + db.isOpen());

جرب هذا:

String dir = Environment.getExternalStorageDirectory().getPath()
File dbfile = new File(dir+"/mydb.sqlite"); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
System.out.println("Its open? "  + db.isOpen());

مجرد فكرة:

  • يمكنك وضع قاعدة البيانات الخاصة بك في مجلد الأصول.

  • إذا كان ملف قاعدة البيانات الخاص بك أكبر من 2 ميغابايت ، فإن النظام غير قادر على ضغطه ، لذلك تحتاج إلى خيارات أخرى

  • يمكنك إعادة تسمية قاعدة البيانات الخاصة بك على سبيل المثال database.jit أو database.mp3 - التي لم يتم ضغطها ، من أول تشغيل يمكنك إعادة تسميتها إلى database.db







download