بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چسباندن دیتابیس به پیج نصب apk

مدیریت گفتگو
tiam 10 سال پیش
آخرین تغییر: 10 سال پیش

چطوری میشه پس از ایجاد دیتابیس و ارتباط ap با ان هنگام نصب بر روی گوشی دیتابیس ساخته شده نیز منتقل شود.(ساده بگم دیتابیس ساخته شده به همراه فایل  نصب apk  باشه)

نظرات

tiam 10 سال پیش
یادم رفت بگم دیتابیس local و بصورت دستی هم نمیخوام کپی بشه ممنون
کاشی زاده 10 سال پیش
یا باید دستورات SQL رو برای تک تک رکورد ها بزنید ، یا فایل دیتابیس رو جدا قرار بدید یا آنلاین دیتابیس رو از سرور بخونید .
tiam 10 سال پیش
ممنون راه دیگه ای وجود نداره .... آخه این برنامه یک دفتر تلفن که دیتابیسش آماده و پر شده فقط میخوایم هنگام نصب روی هر گوشی دیتابیس رو از مسیر پیش فرض بخونه
کاشی زاده 10 سال پیش
میتونید دیتابیس رو داخل Folder Assets قرار بدید که بهمراه برنامه باشه .
tiam 10 سال پیش
بازم ممنون میشه یکم بیشتر توضیح بدین بعدش فایل رو چطوری بخونم یا اینکه باید ابتدا تو مسیر مورد نظر کپی کنم بعدش بخونم؟؟؟

پاسخ‌ها 1

mars120 10 سال پیش

برای انتقال و خواندن دیتابیس از پوشه assets ابتدا دیتابیس رو به پوشه assets انتقال بدید و پسوندش رو حذف کنید سپس یک کلاس به نام دیتابیس مطابق کد های زیر ایجاد کنید ( اسم دیتابیس من database  هست که شما میتونید تغییرش بدید )،مسیرش هم بهتره که همین مسیری که گذاشتم باشه تا با هر بار حذف برنامه دیتابیس هم پاک بشه که بعدا موقع آپدیت دیتابیس مشکل ایجاد نشه

 public class database extends SQLiteOpenHelper {

    public final String   sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
    public final String   path   = sdcard + "/Android/data/نام پکیج/databases/";
    public final String   Name   = "database";
    public SQLiteDatabase mydb;
    private final Context mycontext;


    public database(Context context) {
        super(context, "database", null, 1);
        mycontext = context;
    }


    @Override
    public void onCreate(SQLiteDatabase arg0) {
        new File(path).mkdirs();

    }


    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

    }


    public void useable() {
        boolean checkdb = checkdb();
        if (checkdb) {

        } else {
            this.getReadableDatabase();
            try {
                copydatabase();
            }
            catch (IOException e) {

            }
        }
    }


    public void open() {
        mydb = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);
    }


    @Override
    public void close() {
        mydb.close();
    }


    public boolean checkdb() {
        SQLiteDatabase db = null;
        try {
            db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);
        }
        catch (SQLException e) {

        }
        return db != null ? true : false;
    }


    public void copydatabase() throws IOException {

        OutputStream myOutput = new FileOutputStream(path + Name);
        byte[] buffer = new byte[1024];
        int lenght;
        InputStream myInput = mycontext.getAssets().open(Name);
        while ((lenght = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, lenght);
        }
        myInput.close();
        myOutput.flush();
        myOutput.close();
    }
//محل نوشتن متدها
}

نظرات

tiam 10 سال پیش
ممنون از توجه شما ایشالله جواب بده

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .