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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
#1

OnUpgrade сторонней БД из assets - Программирование Android

11.05.2015, 22:16. Просмотров 337. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OnUpgrade сторонней БД из assets (Программирование Android):

Assets - Программирование Android
Здравствуйте,форумчане) Нигде не могу найти нужной информации((( Мне нужно считывать и записывать в обычные текстовые файлы (.txt)...

WebView и .html в assets - Программирование Android
Как загрузить локальный файл.html из assets в WebView? Через loadUrl получается, но тогда не работают ссылки на другие файлы, нашел, что...

Копирование папки из Assets - Программирование Android
Всем здравствуйте! Я бы хотел узнать как можно скопировать подпапку (например "pictures") находящуюся в папке assets на карту памяти...

Write assets folder - Программирование Android
Как записать файл в папку активы

Assets android безопасность - Программирование Android
Добрый день! Файлы находящиеся в assets защищены от копировании "ламерами"? Хочу в assets(ресурсы) засунуть SSL сертификат, чтобы...

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

1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
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
Привет! Вот еще темы с ответами:

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

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

Как локализовать папку assets? - Программирование Android
Привет форум! Кто ни будь может объяснить как локализовать папку assets? В инете мало информации об этом и та вся на инглише

Получить абсолютный путь к Assets файлам - Программирование Android
Здравствуйте. Проект под MonoAndroid, но в данном случае это не важно. Использую iTextSharp для создания .pdf файла. И чтобы кирилица...


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

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

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