Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
#1

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

11.05.2015, 22:16. Просмотров 382. Ответов 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
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2015, 22:16
Ответы с готовыми решениями:

Assets
Здравствуйте,форумчане) Нигде не могу найти нужной информации((( Мне нужно...

Assets android безопасность
Добрый день! Файлы находящиеся в assets защищены от копировании "ламерами"?...

Копирование папки из Assets
Всем здравствуйте! Я бы хотел узнать как можно скопировать подпапку (например...

WebView и .html в assets
Как загрузить локальный файл.html из assets в WebView? Через loadUrl...

Write assets folder
Как записать файл в папку активы

1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
13.05.2015, 00:42 #2
poy4eg, https://github.com/jgilfelt/android-sqlite-asset-helper
Почитайте readme. В целом, библиотека неплоха.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2015, 00:42

Доступ к картинке хранящейся в assets
Подскажите плз. Можно получить доступ к файлам хранящимся в assets через их...

Записать файл .wav в assets
Здравствуйте! Генерирую массив данных с заголовком для wav файла. И не удаётся...

Работа с файлом из папки Assets
Вопрос к знающим. При старте приложения в методе onCreate() постоянно копирую...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru