SQLite
 sql >> база данни >  >> RDS >> SQLite

Четене на база данни от папката с активи

За да се използва пакетирана база данни (т.е. такава, която е включена като актив) за пълно използване, базата данни трябва да бъде разархивирана (автоматично) и копирана на подходящо място (най-често data/data//databases/ където <име_пакета> и <име_на_база данни> ще бъде според името на пакета на приложението и съответно името на базата данни).

За да "опаковате", базата данни трябва да бъде включена в папката с активи и за предпочитане в папка с бази данни (изисква се, ако използвате SQLiteAssetHelper без модификация ).

Освен това копието трябва да бъде направено преди реалното отваряне на базата данни, след което тя може да бъде отворена.

Използване на SQLiteAssetHelper

  1. Първата стъпка е да създадете базата данни, която да бъде пакетирана, това няма да бъде покрито, тъй като има много налични инструменти. За този пример базата данни е файл с име test.db

  2. След това трябва да създадете своя проект, в този случай проектът е наречен DBtest с Compnay Domian като com.DBtest така че името на пакета е dbtest.com.dbtest .

  3. Следващият етап е да копирате базата данни в папката с активи.

    1. Създаване на активи папка в src/main папка, ако все още не съществува.
    2. Създаване на папката бази данни" в **активите папка, ако все още не съществува.
    3. Копиране на файла на базата данни (test.db в този пример) в папката на базата данни.

  4. Следващият етап е да настроите проекта да използва SQLiteAssetHelper, като го включите в build.gradle на приложението .

    1. Редактирайте build.gradle в Приложението папка.
    2. Добавете реда implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' в секцията зависимости.
    3. Щракнете върху Синхронизиране сега

  1. Създайте клас, който е подклас на новия/сега наличния клас SQLiteAssethelper. За това упражнение то ще се нарича DBHelper .

    1. Щракнете с десния бутон върху Основна активност java клас, изберете Нов и след това Java клас.
    2. В полето Име въведете DBHelper .
    3. В полето SuperClass започнете да пишете SQLiteAsset (досега класът SQliteAssetHelper ще бъде избираем), така че го изберете. Трябва да се реши да бъде:-
    4. Щракнете върху OK.
  2. Създайте конструктора за класа DBHelper по линиите на

:-

public class DBHelper extends SQLiteAssetHelper {

    public static final String DBNAME = "test.db"; //<<<< must be same as file name
    public static final int DBVERSION = 1;

    public DBHelper(Context context) {
        super(context,DBNAME,null,DBVERSION);
    }
}
  1. Създайте екземпляр на DBHelper и след това отворете базата данни.

    1. Забележка за улеснение друг клас, наречен CommonSQLiteUtilities , както е копирано от Има ли методи, които помагат при разрешаването на често срещани проблеми със SQLite?
    2. Създайте екземпляр на класа DBHelper, като използвате нещо по реда на

      • DBHelper mDBHlpr =нов DBHelper(това);
    3. с помощта на CommonSQLiteUtilities базата данни беше достъпна с помощта на :-

      • CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());
    4. Основната активност в пълен размер стана

:-

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DBHelper mDBHlpr = new DBHelper(this);
        CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());
    }
}

Резултатът беше успешно записване на стартиране :-

04-11 06:12:55.091 1401-1401/dbtest.com.dbtest W/SQLiteAssetHelper: copying database from assets...
    database copy complete
04-11 06:12:55.123 1401-1401/dbtest.com.dbtest I/SQLiteAssetHelper: successfully opened database test.db
04-11 06:12:55.127 1401-1401/dbtest.com.dbtest D/SQLITE_CSU: DatabaseList Row 1 Name=main File=/data/data/dbtest.com.dbtest/databases/test.db
    Database Version = 1
    Table Name = mytable Created Using = CREATE TABLE mytable (
        _id INTEGER PRIAMRY KEY, 
        mydata TEXT, 
        inserted INTEGER DEFAULT CURRENT_TIMESTAMP
    )
    Table = mytable ColumnName = _id ColumnType = INTEGER PRIAMRY KEY Default Value = null PRIMARY KEY SEQUENCE = 0
    Table = mytable ColumnName = mydata ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
    Table = mytable ColumnName = inserted ColumnType = INTEGER Default Value = CURRENT_TIMESTAMP PRIMARY KEY SEQUENCE = 0
    Table Name = android_metadata Created Using = CREATE TABLE android_metadata (locale TEXT)
    Table = android_metadata ColumnName = locale ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
  • Първите два реда са от SQliteAssethelper , останалите са от logDatabaseInfo метод на CommonSQLiteUtilities клас.
  • При подпоследователно изпълнение базата данни няма да бъде копирана, тъй като вече съществува.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite - Импортиране на данни от CSV файл

  2. Как да поръчате по име на месец в SQLite

  3. Android SQLite LIKE escape заместващ знак

  4. Wordnet sqlite Синоними и примери

  5. SQLite JSON_OBJECT()