Форум программистов, компьютерный форум CyberForum.ru

OnUpgrade сторонней БД из assets - Android

Восстановить пароль Регистрация
 
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
11.05.2015, 22:16     OnUpgrade сторонней БД из assets #1
Вообщем ситуевина следующего характера.. имеется сторонняя БД в assets.. при запуске мы читаем ее и записываем в БД программы.. с этим все понятно, но есть проблема следующего характера - как реализовать метод onUpgrade в случае обновления версии базы? перегуглил все что мог, но так и не нашел решения =(

код DBHelper'a

Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
 
public class DBHelper extends SQLiteOpenHelper {
 
    private static final String DB_NAME = "tramp.db";
    private static final int DB_VERSION = 1;
    private static final String DB_PATH = "/data/data/by.poy4eg.tramp/databases/"; //Путь к БД
 
    private static final String TABLE_CITIES = "TABLE_CITIES";   
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_IMG = "COLUMN_IMG";
    public static final String COLUMN_CITY = "COLUMN_CITY";
    public static final String COLUMN_CATEGORY = "COLUMN_CATEGORY";
    public static final String COLUMN_CONTENT = "COLUMN_CONTENT";
    
 
 
    private Context mCtx;
    public SQLiteDatabase mDB;
 
 
 
    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.mCtx=context;
 
        boolean dbexist = checkdatabase();
        if (dbexist) {
            System.out.println("База данных существует");
            open();
        } else {
            System.out.println("База данных не существует!");
            createdatabase();
        }
    }
 
    public void createdatabase() {
        boolean dbexist = checkdatabase();
        if(dbexist) {
            //System.out.println("База данных существует");
        } else {
            this.getReadableDatabase();
            copydatabase();
        }
    }
    private boolean checkdatabase() {
        boolean checkdb = false;
        try {
            String myPath = DB_PATH + DB_NAME;
            File dbfile = new File(myPath);
            checkdb = dbfile.exists();
        } catch(SQLiteException e) {
            System.out.println("База данных не существует!");
        }
        return checkdb;
    }
    private void copydatabase(){
        Log.i("Database",
                "Новая база данных копируется на устройство!");
        byte[] buffer = new byte[1024];
        OutputStream myOutput = null;
        int length;
        // Открываем локальную БД как входящий поток
        InputStream myInput = null;
        try
        {
            myInput = mCtx.getAssets().open(DB_NAME);
            // Передаем данные из inputfile в outputfile
            myOutput = new FileOutputStream(DB_PATH + DB_NAME);
            while((length = myInput.read(buffer)) > 0)
            {
                myOutput.write(buffer, 0, length);
            }
            myOutput.close();
            myOutput.flush();
            myInput.close();
            Log.i("Database",
                    "Новая база данных скопирована на устройство");
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
    // Открываем подключение к БД
    public void open() throws SQLException {
        String mypath = DB_PATH + DB_NAME;
        mDB = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READWRITE);
    }
    // Закрываем подключение
    public synchronized void close() {
        if(mDB != null) {
            mDB.close();
        }
        super.close();
    }
 
 
 
    // Получить данные из таблицы
    public Cursor getAllDataFromCities() {
        return mDB.query(TABLE_CITIES,
                new String[]{
                        COLUMN_CITY,
                        COLUMN_ID,
                        COLUMN_IMG,
                },
                null, null, null, null);
    }
   
 
 
 
    @Override
    public void onCreate(SQLiteDatabase mDB) {
        // TODO Auto-generated method stub
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase mDB, int oldVersion, int newVersion) {    
       // TODO Auto-generated method stub
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2015, 22:16     OnUpgrade сторонней БД из assets
Посмотрите здесь:

Assets Android
Android Write assets folder
Android Доступ к картинке хранящейся в assets
Android Assets android безопасность
Android Копирование папки из Assets
WebView и .html в assets Android
Android При чтении JSON файла из папки Assets разные данные
Получить абсолютный путь к Assets файлам Android
Как локализовать папку assets? Android
Записать файл .wav в assets Android
Работа с файлом из папки Assets Android
как загрузить файл в папку assets Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
13.05.2015, 00:42     OnUpgrade сторонней БД из assets #2
poy4eg, https://github.com/jgilfelt/android-sqlite-asset-helper
Почитайте readme. В целом, библиотека неплоха.
Yandex
Объявления
13.05.2015, 00:42     OnUpgrade сторонней БД из assets
Ответ Создать тему
Опции темы

Текущее время: 15:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru