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




tutorial code (5)

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

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

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

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

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

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


مجرد فكرة:

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

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

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


جرب هذا:

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());

أشارك التعليمة البرمجية التالية. أعلن 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();

no such table exists: error قادم لأنه بمجرد إنشاء قاعدة بيانات بجدول واحد بعد ذلك كلما قمت بإنشاء جدول في نفس قاعدة البيانات يعطي هذا الخطأ.

لحل هذا الخطأ يجب عليك إنشاء قاعدة بيانات جديدة وداخل الأسلوب onCreate () يمكنك إنشاء جدول متعدد في نفس قاعدة البيانات.







database android sqlite download