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

Как быстро подключить готовую БД SQLite к проекту Android - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Передача данных между потоками http://www.cyberforum.ru/android-dev/thread1797022.html
Всем доброго времени суток. В общем есть приложение, которое парсит сайт с музыкой, добавляет результат в listView и затем выводит результат на экран. Сам парсинг проходит в одном потоке, а вывод на...
Программирование Android ВМ Windows на Android Существует ли такое в реале, чтоб работало нормально, можно ли самому сделать на других программах (Delphi, Java, visual studio)? http://www.cyberforum.ru/android-dev/thread1796962.html
Программирование Android Как разместить 2 элемнта с центаром на одной прямой?
Я не могу понять, как можно в активности разместить два элемента так, чтобы их центры были расположены на одной прямой... Если, например, разместить изображение с...
Убрать скролл в ListView Программирование Android
Пишу форму для настольной игры. На форме несколько списков ListView, каждый из которых скрывается по кнопке. Всё это находится в ScrollView. Я ожидал, что списки будут видны полностью, высотой будут...
Программирование Android TableLayout как отловить значение строки по нажатию (для Андроид на java) http://www.cyberforum.ru/android-dev/thread1796917.html
Я только начинающий, прошу помочь по возможность, уже 2 день ищу информацию так и не понял как реализовать. Необходимо по нажатию на табличной части tableLayout отловить все значения колонок которые...
Программирование Android MediaPlayer: как продолжить работу аудио-плеера в фоновом режиме? Как продолжить работу ауди плеера в фоновом режиме? Сервис создал, но что туда надо передать? Весь код выполняется в Activity. подробнее

Показать сообщение отдельно
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932

Как быстро подключить готовую БД SQLite к проекту Android - Программирование Android

21.08.2016, 23:59. Просмотров 245. Ответов 1
Метки (Все метки)

Решил написать мини гайд по подключению готовой БД, мне это пригодится неоднократно, надеюсь кому-то будет полезно:
  1. Создать папку Assets, New -> Folder -> Assets Folder
  2. Скопировать вашу БД в папку Assets( в моем случае файл называется Wheather.sqlite)
  3. Подключить библиотеку SQLiteAssetHelper
    Java
    1
    2
    3
    
    dependencies {
        compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    }
  4. Создать класс для работы с БД (У меня это DatabaseHandler), унаследованный от класса SQLiteAssetHelper
    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
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
     
    import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
    import java.util.ArrayList;
     
    public class DatabaseHandler extends SQLiteAssetHelper {
     
        private static final String DATABASE_NAME = "Wheather.sqlite";
        private static final int DATABASE_VERSION = 1;
        private static final String TABLE_WHEATHER = "Wheather";
        
        private static DatabaseHandler ourInstance;
     
        public static synchronized DatabaseHandler getInstance(Context context) {
     
            if (ourInstance == null)
                ourInstance = new DatabaseHandler(context);
     
            return ourInstance;
        }
     
        private DatabaseHandler(Context context) {
            super(context, DATABASE_NAME, context.getExternalFilesDir(null).getAbsolutePath(), null, DATABASE_VERSION);
        }
     
        public ArrayList<MeteoData> getTemperature() {
            SQLiteDatabase db = this.getWritableDatabase();
            Cursor c = db.rawQuery("Select T,DateTime From " +TABLE_WHEATHER,null );
            ArrayList<MeteoData> list = new ArrayList<>();
            if (checkCursorFirst(c))
            {
                do
                {
                    MeteoData mData = new MeteoData(c.getFloat(0),c.getLong(1));
                    list.add(mData);
                }
                while (c.moveToNext());
            }
            closeCursor(c);
            db.close();
            return list;
        }
     
        private void closeCursor(Cursor cursor) {
            if(cursor != null && !cursor.isClosed()){
                cursor.close();
            }
        }
     
        private boolean checkCursorFirst(Cursor cursor) {
            return cursor!=null && cursor.moveToFirst();
        }
     
    }
Profit!
P.S. Знаю, что есть куча других способов, но этот лично для меня самый быстрый
P.S.S. Для БД лично я всегда использую Singlton и никогда не выдаю параметром Cursor, если вам нужен курсор,то на основной странице проекта пример с ним,я же всегда закрываю и курсор и БД

Добавлено через 1 час 1 минуту
Базу положить по пути assets/databases/Wheather.db
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru