Android — Android SQLite


Содержание

Работа с базами данных SQLite

Подключение к базе данных SQLite

В Andro >android.database.sqlite определен набор классов, которые позволяют работать с базами данных SQLite. И каждое приложение может создать свою базу данных.

Чтобы использовать SQLite в Android, надо создать базу данных с помощью выражение на языке SQL. После этого база данных будет храниться в каталоге приложения по пути:

ОС Android по умолчанию уже содержит ряд встроенных бад SQLite, которые используются стандартными программами — для списка контактов, для хранения фотографий с камеры, музыкальных альбомов и т.д.

Основную функциональность по работе с базами данных предоставляет пакет android.database . Функциональность непосредственно для работы с SQLite находится в пакете android.database.sqlite .

База данных в SQLite представлена классом android.database.sqlite.SQLiteDatabase . Он позволяет выполнять запросы к бд, выполнять с ней различные манипуляции.

Класс android.database.sqlite.SQLiteCursor предоставляет запрос и позволяет возвращать набор строк, которые соответствуют этому запросу.

Класс android.database.sqlite.SQLiteQueryBuilder позволяет создавать SQL-запросы.

Сами sql-выражения представлены классом android.database.sqlite.SQLiteStatement , которые позволяют с помощью плейсхолдеров вставлять в выражения динамические данные.

Класс android.database.sqlite.SQLiteOpenHelper позволяет создать базу данных со всеми таблицами, если их еще не существует.

В SQLite применяется следующая система типов данных:

INTEGER : представляет целое число, аналог типу int в java

REAL : представляет число с плавающей точкой, аналог float и double в java

TEXT : представляет набор символов, аналог String и char в java

BLOB : представляет массив бинарных данных, например, изображение, аналог типу int в java

Сохраняемые данные должны представлять соответствующие типы в java.

Создание и открытие базы данных

Для создания или открытия новой базы данных из кода Activity в Andro >openOrCreateDatabase() . Этот метод может принимать три параметра:

название для базы данных

числовое значение, которое определяет режим работы (как правило, в виде константы MODE_PRIVATE )

необязательный параметр в виде объекта SQLiteDatabase.CursorFactory , который представляет фабрику создания курсора для работы с бд

Например, создание базы данных app.db :

Для выполнения запроса к базе данных можно использовать метод execSQL класса SQLiteDatabase. В этот метод передается SQL-выражение. Например, создание в базе данных таблицы users:

Если нам надо не просто выполнить выражение, но и получить из бд какие-либо данные, то используется метод rawQuery() . Этот метод в качестве параметра принимает SQL-выражение, а также набор значений для выражения sql. Например, получение всех объектов из базы данных:

Метод db.rawQuery() возвращает объект Cursor, с помощью которого мы можем извлечь полученные данные.

Возможна ситуация, когда в базе данных не будет объектов, и для этого методом query.moveToFirst() пытаемся переместиться к первому объекту, полученному из бд. Если этот метод возвратит значение false, значит запрос не получил никаких данных из бд.

Теперь для работы с базой данных сделаем простейшее приложение. Для этого создадим новый проект.

В файле activity_main.xml определим простейший графический интерфейс:

А в классе MainActivity определим взаимодействие с базой данных:

По нажатию на кнопку здесь вначале создается в базе данных app.db новая таблица users, а затем в нее добавляются два объекта в базу данных с помощью SQL-выражения INSERT.

Далее с помощью выражения SELECT получаем всех добавленных пользователей из базы данных в виде курсора Cursor.

Вызовом query.moveToFirst() перемещаемся в курсоре к первому объекту, и так как у нас может быть больше одного объекта, то проходим по всему курсору в цикле do. while.

Для получения данных из курсора применяются методы query.getString(0) и query.getInt(1) . В скобках в методы передается номер столбца, из которого мы получаем данные. Например, выше мы добавили вначале имя пользователя в виде строки, а затем возраст в виде числа. Значит, нулевым столбцом будет идти строкое значение, которое получаем с помощью метода getString() , а следующим — первым столбцом идет числовое значение, для которого применяется метод getInt() .

После завершения работы с курсором и базой данных мы закрываем все связанные объекты:

Если мы не закроем курсор, то можем столкнуться с проблемой утечки памяти.

И если мы обратимся к приложению, то после нажатия на кнопку в текстовое поле будут выведены добавленные данные:

Android — SQLite Database

SQLite is a opensource SQL database that stores data to a text file on a device. Android comes in with built in SQLite database implementation.

SQLite supports all the relational database features. In order to access this database, you don’t need to establish any kind of connections for it like JDBC,ODBC e.t.c

Database — Package

The main package is android.database.sqlite that contains the classes to manage your own databases

Database — Creation

In order to create a database you just need to call this method openOrCreateDatabase with your database name and mode as a parameter. It returns an instance of SQLite database which you have to receive in your own object.Its syntax is given below

Apart from this , there are other functions available in the database package , that does this job. They are listed below

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler)

This method only opens the existing database with the appropriate flag mode. The common flags mode could be OPEN_READWRITE OPEN_READONLY

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags)

It is similar to the above method as it also opens the existing database but it does not define any handler to handle the errors of databases

openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)

It not only opens but create the database if it not exists. This method is equivalent to openDatabase method.

openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)

This method is similar to above method but it takes the File object as a path rather then a string. It is equivalent to file.getPath()

Database — Insertion


we can create table or insert data into table using execSQL method defined in SQLiteDatabase class. Its syntax is given below

This will insert some values into our table in our database. Another method that also does the same job but take some additional parameter is given below

Sr.No Method & Description
1

execSQL(String sql, Object[] bindArgs)

This method not only insert data , but also used to update or modify already existing data in database using bind arguments

Database — Fetching

We can retrieve anything from database using an object of the Cursor class. We will call a method of this class called rawQuery and it will return a resultset with the cursor pointing to the table. We can move the cursor forward and retrieve the data.

There are other functions available in the Cursor class that allows us to effectively retrieve the data. That includes

Sr.No Method & Description
1

This method return the total number of columns of the table.

This method returns the index number of a column by specifying the name of the column

This method returns the name of the column by specifying the index of the column

This method returns the array of all the column names of the table.

This method returns the total number of rows in the cursor

This method returns the current position of the cursor in the table

This method returns true if the cursor is closed and return false otherwise

Database — Helper class

For managing all the operations related to the database , an helper class has been given and is called SQLiteOpenHelper. It automatically manages the creation and update of the database. Its syntax is given below

Example

Here is an example demonstrating the use of SQLite Database. It creates a basic contacts applications that allows insertion, deletion and modification of contacts.

To experiment with this example, you need to run this on an actual device on which camera is supported.

Sr.No Method & Description
1
Steps Description
1 You will use Android studio to create an Android application under a package com.example.sairamkrishna.myapplication.
2 Modify src/MainActivity.java file to get references of all the XML components and populate the contacts on listView.
3 Create new src/DBHelper.java that will manage the database work
4 Create a new Activity as DisplayContact.java that will display the contact on the screen
5 Modify the res/layout/activity_main to add respective XML components
6 Modify the res/layout/activity_display_contact.xml to add respective XML components
7 Modify the res/values/string.xml to add necessary string components
8 Modify the res/menu/display_contact.xml to add necessary menu components
9 Create a new menu as res/menu/mainmenu.xml to add the insert contact option
10 Run the application and choose a running android device and install the application on it and verify the results.

Following is the content of the modified MainActivity.java.

Following is the modified content of display contact activity DisplayContact.java

Following is the content of Database class DBHelper.java

Following is the content of the res/layout/activity_main.xml

Following is the content of the res/layout/activity_display_contact.xml

Following is the content of the res/value/string.xml

Following is the content of the res/menu/main_menu.xml

Following is the content of the res/menu/display_contact.xml

This is the defualt AndroidManifest.xml of this project

Let’s try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio , open one of your project’s activity files and click Run icon from the tool bar. Before starting your application,Android studio will display following window to select an option where you want to run your Android application.

Select your mobile device as an option and then check your mobile device which will display following screen −

Now open your optional menu, it will show as below image: Optional menu appears different places on different versions

Click on the add button of the menu screen to add a new contact. It will display the following screen −

It will display the following fields. Please enter the required information and click on save contact. It will bring you back to main screen.

ИнтеллигенцияX

Как работать с базой данных SQLite в Android Studio

А давай-ка я добавлю Android Studio + SQLite

На форме размещаем три текстовых метки, три поля для ввода/отображения информации из базы, полей ФИО, Должность, Телефон и кнопку Сохранить

В закладке Text это выглядит вот так:

В закладке Design так:

Далее создадим класс для работы с SQLite, назовем его ControlSQL

добавим расширение extends SQLiteOpenHelper

И в этом классе опишем функции работы с базой SQLLite

Получится такой код:

Когда надо что-то сделать с базой, например, прочитать значения, мы можем обратиться к базе.

В этом примере будем считывать и записывать всего одну строку контакта, этого достаточно для любой задачи по хранению настроек.

Давайте при загрузке программы сделаем, чтобы в размещенные на форме поля брались значения из базы SQLLite, а при нажатии кнопки «Сохранить» — чтобы сохранялись измененные значения.

Для записи значений используем .updateTable

Если нужно не сохранять значение, а добавлять в базу, то нужно вызвать функцию .createNewTable

в итоге получился такой код

Когда все скомпилируем (Build-Build APK), получится вот такое приложение, назовем его «Лучший спонсор»:

При первом запуске откроется окно для сохранения настроек, например имени и телефона главного спонсора.


Первоначально поля пустые.

Заносим реквизиты спонсора, нажимаем Сохранить.

Информация сохраняется в базу SQLite.

Когда нужно вспомнить телефон спонсора, запускаем приложение, информация считывается из SQLite, и вуаля — спонсор на связи.

Отображать информацию можно либо в виде набора полей, либо в виде списка.

Для вывода списка используют обычно ListView или RecyclerView.

Создаём приложение заметок. Основы работы с SQLite в Andro >

В прошлых уроках мы создали своё первое серьёзное приложение, позволяющее устанавливать и удалять приложения.

Теперь же мы начнём создавать уже второе приложение — для хранения заметок. И, как и раньше, при создании приложения постепенно будем получать новые навыки и знания, необходимые для каждого разработчика.

Давайте же сформулируем задачу, которую мы решим за ближайшие несколько уроков: создать приложение, которое позволит создавать, хранить, удалять и редактировать заметки. Приложение должно уметь не только сохранять текст (это слишком уж банально), но и прикреплять фотографии.

Ну и, конечно же, всё это будет реализовано с использованием Material Design.

Работа с SQLite

В Android, как и в iOS, есть встроенная в систему компактная база данных — SQLite.

SQLite обладает рядом недостатков — например, в него нельзя писать данные одновременно из нескольких потоков. Однако, все эти недостатки перекрываются огромным (для мобильных устройств) преимуществом: она чрезвычайно компактна.

Вся база данных хранится в одном-единственном файле, и, хоть и работает она относительно медленно (по сравнению со «старшими братьями»; для своих целей она является очень даже шустрой), но при этом занимает очень мало места и способна работать даже на самых слабых устройствах.

Чтобы понять, как оно работает, давайте попробуем поработать с SQLite на компьютере. Если вы не знакомы с SQL, рекомендую ознакомиться с этой статьёй и ссылками в ней.

В практике работы с SQLite нам поможет приложение SQLite Database Browser. Оно полностью бесплатно, работает на macOS, Windows и Linux, и исходный код доступен на GitHub. Скачайте и установите его.

После установки запустите приложение и нажмите на кнопку New Database:

Кнопка «New Database»

Введите имя и расположения файла, в котором будет создана БД и нажмите на кнопку Save:

Выбор файла для сохранения БД

После этого появится диалог, предлагающий создать таблицу. Закройте его — мы будем создавать её вручную.

Выберите вкладку Execute SQL:

Вкладка «Execute SQL»

Для начала нам нужна одна таблица, в которой мы будем хранить заметки. В таблице будут такие столбцы:

  • id — integer , primary key . Идентификатор заметки.
  • title — text , заголовок заметки.
  • note — text , текст заметки.
  • created_ts — integer , дата создания заметки в формате unix time.
  • updated_ts — integer , дата последнего изменения заметки в формате unix time.

SQL-запрос для создания таблицы будет таким:

Введите его в поле для запроса и нажмите на кнопку Execute SQL. Результат выполнения появится в окне ниже:

Результат выполнения SQL

Теперь вернемся на вкладку Database Structure и посмотрим, что получилось:

Структура БД SQLite

Отлично. Теперь вставим первую заметку в нашу таблицу:

В качестве времени создания и обновления для простоты передадим 0 , то есть начало эпохи UNIX. Выполните этот запрос и перейдите на вкладку Browse Data:

Данные в БД SQLite

Как видите, данные вставились успешно. Добавьте ещё одну заметку:

У неё мы изменили время создания и редактирования.

Зачем? Чтобы показать работу сортировки в SQLite. Мы будем показывать первыми те заметки, которые были изменены последними.

Если вы выполните следующий запрос:

То получите вот такой результат:

Результат выполнения SELECT

То есть первой показывается первая заметка. А теперь выполните вот такой запрос:

В нём мы говорим базе данных, что нужно отсортировать данные по полю updated_ts , при этом сортировку нужно выполнить по убыванию. Результатом будет следующий набор данных:

Данные в БД SQLite с сортировкой

Теперь давайте попробуем обновить заметку:

Главное — не забыть WHERE , иначе обновятся все строки в таблице.

Ну и удалим заметку:

Последняя вещь, о которой нужно узнать — это индексы. Если у пользователя будет много заметок, то сортировка может занимать достаточно продолжительное время, в результате, список заметок будет отображаться с лагами. Поэтому нам нужно создать индекс по столбцу updated_ts :

Вот и всё! Примерно то же самое мы будем делать в нашем приложении.

SQLite в Android

Работа с SQLite в Android отличается от того, что мы делали ранее всего парой аспектов:

  • Вам почти никогда не придётся работать с «сырыми» SQL-запросами — для вставки/получения/удаления записей есть удобные методы.
  • Стандартное для большинства движков БД имя столбца id в Android по какой-то неведомой причине принято заменять на _id . Лучше следовать этому стандарту, иначе некоторые вещи могут сломаться.

Базы данных хранятся в приватных директориях приложений, то есть они недоступны для других приложений.


Создайте новый проект, как мы делали это ранее. В прошлом проекте мы хранили все файлы в одном пакете. В этом мы более аккуратно подойдём к организации. Начнём, собственно, с БД.

Внутри основного пакета создайте пакет db :

Создание нового пакета

Контракт БД

В пакете db , который мы создали ранее, создайте класс NotesContract :

Этот класс облегчит работу с БД, а так же будет выступать в качестве «документации» структуры нашей БД для тех, кто возможно будет смотреть наши исходники. В нём мы будем описывать таблицы, которые будут присутствовать в БД.

Подключение существующей БД SQLite в Andro >Обучающий пример работы с БД SQLite, которая была заранее подготовлена.

10.04.2020 23 комментария 29 013 просмотров

Пример простого Andro >

Содержание

Введение

Есть два подхода к работе с БД в Android приложениях.

В первом варианте БД создается в событии OnCreate главной активности. Данный вариант хорош для случая, когда база данных при установки приложения пуста либо заполнена небольшим количеством данных, а также в БД активно производятся записи в дальнейшем.

Но данный способ не очень хорош, если, например, пишите какой-нибудь справочник или другое приложение, когда БД при установке приложения уже должна быть заполнена большим количеством записей. На мой взгляд, в этом случае лучше БД подготовить заранее, а потом уже её подключить как отдельный файл в ресурсах приложения. В данной статье рассмотрен данный случай.

Создание базы данных

Для создания БД SQLite будем использовать, например, DB Browser for SQLite. Скачиваем и устанавливаем.

Буем создавать БД с одной таблицей такого вида.

_id name age
1 Anton 30
2 Alina 24
3 Dima 28
4 Dasha 23

Итак, создаем базу данных.

Где-нибудь сохраняем и называем, например, info.db .

Создаем таблицу, например, clients . И добавляем там поле.

Первым полем у нас будет номер записи _id . Поле будет также первичным ключом.

Аналогичным способом создаем поля age и name . И жмем OK .

В списке таблиц у нас появилась наша таблица clients .

Переходим в режим заполнения таблицы.

Выбираем там нашу таблицу и жмем Добавить запись .

Заполняем наши данные и сохраняем изменения в БД.

Создание Android проекта

Открываем Android Studio и создаем там новый проект с пустой активностью. Всё как обычно.

Разметка активности

Так как мы создаем простейшее приложение, но в xml файле активности разместим только кнопку и поле для вывода текста.

Подготовка Java кода

Нам потребуется обработать клик на кнопку button и что-то записать в textView .

Поэтому найдем данные компоненты и свяжем их в java коде с xml.

Объявим переменные компонентов.

Найдем компоненты в XML разметке.

Пропишем обработчик клика кнопки.

Полный код java файла.

Добавление БД в проект

Все приготовления сделаны. Теперь можем начать работать по теме статьи. Вначале добавим файл базы данных в проект.

Создадим папку assets в нашем проекте.

Скопируем файл нашей базы данных.

Добавление класса для работы с БД

Для открытия и подготовки БД в Andro >SQLiteOpenHelper . Мы тоже создадим наследник этого класса DatabaseHelper , но он будет сильно модифицированный, так как мы будем работать с готовой базой данных, а не создавать ей с помощью SQL запросов.

Ниже приведен текст всего класса, который нужно просто скопировать.

Для работы в последующим с другими базами данных вам ничего не нужно будет менять в данном классе, кроме строчек.

Разберем что означают эти строчки.

DB_NAME — имя файла БД. Какой файл БД вы создали, такое название сюда и копируем.

DB_PATH — путь к БД. Каждое приложение в Android имеет свою область памяти, куда складываются файлы программы. Вдруг вы захотите вывернуть путь к файлу БД. Я бы ничего не трогал.

DB_VERSION — самая интересная переменная (причем в примерах в сети по работе с готовой БД её обходят стороной). Это номер версии БД. Ниже описан принцип работы данного класса. Например, вы пишите справочник рецептов под Android и рецепты храните в БД. В момент создания установки приложения программа должна скопировать БД на устройство. Потом через какое-то время вы решили обновить приложение, и БД у вас обновилась: структура БД поменялась, добавились новые рецепты. И вам нужно заменить старую БД на новую. Вот тут вы и пропишите в данной переменной новую версию БД. И при открытии приложения будет произведена проверки версии БД и файл БД обновится. Вначале версия БД равна 1.

Итак, логика работы класса DatabaseHelper в подготовке базы данных.

Копируем файл БД, если этого файла нет (при установке приложения).

Если номер БД обновлен, то заменяем один файл базы данных на другой.

После работы с базой данных из данного класса вытаскиваем экземпляр SQLiteDatabase , с которым будем работать в дальнейшем: осуществлять запросы и так далее.


Подключаемся к БД

Перейдем в класс нашей активности. В нем создадим экземпляр класса DatabaseHelper , попытаемся обновить БД, если это требуется, а потом вытащим экземпляр SQLiteDatabase .

Работа с СУБД SQLite под Andro > 06.05.2015 Admin Комментировать

В основе многих приложений лежат те или иные базы данных (БД). Мобильные приложения для Android не исключение.

В Android присутствует поддержка СУБД SQLite поэтому приложения на основе БД для этой ОС чаще всего используют именно её. Разумеется, что если не все, то большинство средств разработки для Android, включая Delphi, также имеют встроенную поддержку этой СУБД.

Создание приложения на основе СУБД SQLite

Рассмотрим пример создания приложения на основе СУБД SQLite.

Для этого создадим простую БД с одной единственной таблицей, которая будет представлять собой просто список видов животных, и поместим БД в папке с проектом.

Для доступа к БД воспользуемся компонентами FireDAC. Поместим на форму компоненты FDConnection, FDQuery и FDGUIxWaitCursor.

Настроим FDConnection для доступа к БД. Для этого установим следующие значения свойств

Значение
Params.Database Путь к файлу БД (в каждом конкретном случае зависит от того где расположена папка с проектом и файл БД)
Params.DriverID SQLite
LoginPrompt False

В свойстве SQL компонента FDQuery напишем простейший запрос.

Этого достаточно для получения данных из БД. Однако эти данные необходимо как-то отображать.

В отличие от VCL в FireMonkey отсутствуют специализированные компоненты для отображения данных из БД (на подобие DBGrid и т.д.). Поэтому для этих целей приходится использовать обычные компоненты и связывать их с БД посредством LiveBindings. Точнее, компонента BindSourceDB.

Для того чтобы отобразить данные из БД воспользуемся компонентом StringGrid.

Поместим на форму компонент BindSourceDB и установим в качестве DataSet компонент FDQuery.

Установим свойство Connected компонента FDConnection и свойство Active компонента FDQuery в значение true. Далее, щёлкнув правой кнопкой мыши на компоненте BindSourceDB, выберем в контекстном меню пункт «Bind Visually…». Откроется визуальный редактор связей LiveBindings (см. скриншот ниже).

LiveBindings позволяет связать с компонентом набор данных, как целиком, так и по отдельности (отдельные поля). Чтобы в StringGrid отображались все поля, свяжем его с набором данных целиком как показано на скриншоте.

Доработка созданного приложения для работы под Android

Созданное выше приложение вполне работоспособно и его можно спокойно запустить на выполнение в среде Windows. Но, если попытаться запустить это же приложение под Android, то ничего не получится. Причина в особенностях этой ОС. Поэтому, перед запуском приложения под Android, его необходимо предварительно подготовить.

Первое, что нужно сделать, это включить файл БД в состав проекта. Тогда файл БД при компиляции будет автоматически включен в состав файла приложения (apk).

Делается это с помощью стандартной процедуры добавления существующего файла в проект. Например, пункт главного меню Project -> Add to Project.

После того как файл БД добавлен нужно сделать так, чтобы приложение при запуске могло его найти в файловой системе Android.

Для этого в главном меню выберем пункт Progect -> Deployment и в открывшейся таблице найдём файл БД. Расположение файла в файловой системе Android указано в графе Remote Path

В данном случае файл БД будет расположен в папке assets\internal\.

Определив расположение файла БД можно прописать путь к нему. Лучше всего это сделать программно в обработчике события BeforeConnection компонента FDConnection, как показано ниже.

Andro > Anupam Chugh — 47 Comments

Welcome to Android SQLite Example Tutorial. Android SQLite is the mostly preferred way to store data for android applications. For many applications, SQLite is the apps backbone whether it’s used directly or via some third-party wrapper. Below is the final app we will create today using Android SQLite database.

Table of Contents

Android SQLite

Android SQLite is a very lightweight database which comes with Android OS. Android SQLite combines a clean SQL interface with a very small memory footprint and decent speed. For Android, SQLite is “baked into” the Android runtime, so every Android application can create its own SQLite databases.

Android SQLite native API is not JDBC, as JDBC might be too much overhead for a memory-limited smartphone. Once a database is created successfully its located in data/data//databases/ accessible from Android Device Monitor.

SQLite is a typical relational database, containing tables (which consists of rows and columns), indexes etc. We can create our own tables to hold the data accordingly. This structure is referred to as a schema.

Android SQLite SQLiteOpenHelper

Android has features available to handle changing database schemas, which mostly depend on using the SQLiteOpenHelper class.

SQLiteOpenHelper is designed to get rid of two very common problems.

  1. When the application runs the first time – At this point, we do not yet have a database. So we will have to create the tables, indexes, starter data, and so on.
  2. When the application is upgraded to a newer schema – Our database will still be on the old schema from the older edition of the app. We will have option to alter the database schema to match the needs of the rest of the app.

SQLiteOpenHelper wraps up these logic to create and upgrade a database as per our specifications. For that we’ll need to create a custom subclass of SQLiteOpenHelper implementing at least the following three methods.

  1. Constructor : This takes the Context (e.g., an Activity), the name of the database, an optional cursor factory (we’ll discuss this later), and an integer representing the version of the database schema you are using (typically starting from 1 and increment later).
  2. onCreate(SQLiteDatabase db) : It’s called when there is no database and the app needs one. It passes us a SQLiteDatabase object, pointing to a newly-created database, that we can populate with tables and initial data.
  3. onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) : It’s called when the schema version we need does not match the schema version of the database, It passes us a SQLiteDatabase object and the old and new version numbers. Hence we can figure out the best way to convert the database from the old schema to the new one.

We define a DBManager class to perform all database CRUD(Create, Read, Update and Delete) operations.

Opening and Closing Android SQLite Database Connection

Before performing any database operations like insert, update, delete records in a table, first open the database connection by calling getWritableDatabase() method as shown below:

The dbHelper is an instance of the subclass of SQLiteOpenHelper .

To close a database connection the following method is invoked.

Inserting new Record into Android SQLite database table

The following code snippet shows how to insert a new record in the android SQLite database.

Content Values creates an empty set of values using the given initial size. We’ll discuss the other instance values when we jump into the coding part.

Updating Record in Android SQLite database table

The following snippet shows how to update a single record.

Android SQLite – Deleting a Record

We just need to pass the id of the record to be deleted as shown below.

Android SQLite Cursor


A Cursor represents the entire result set of the query. Once the query is fetched a call to cursor.moveToFirst() is made. Calling moveToFirst() does two things:

  • It allows us to test whether the query returned an empty set (by testing the return value)
  • It moves the cursor to the first result (when the set is not empty)

The following code is used to fetch all records:

Another way to use a Cursor is to wrap it in a CursorAdapter . Just as ArrayAdapter adapts arrays, CursorAdapter adapts Cursor objects, making their data available to an AdapterView like a ListView .

Let’s jump to our project that uses SQLite to store some meaningful data.

Android SQLite Example Project Structure

In this application we wish to create records that store Country names and their respective currencies in the form of a ListView. We cover all the features discusses above.

Android SQLite Project Code

The application consists of 5 classes. We begin with defining with DatabaseHelper, which is a subclass of SQLiteOpenHelper as follows:

As discussed above we have overridden the onCreate() and onUpgrade() methods besides the constructor. We’ve assigned the names to the database and the table as JOURNALDEV_COUNTRIES.DB and COUNTRIES respectively. The index column is auto incremented whenever a new row is inserted. The column names for country and currency are “subject” and “description”.

The DBManager classes is where the DatabaseHelper is initialized and the CRUD Operations are defined. Below is the code for this class:

The CountryListActivity.java class is the activity which is launched when the application starts. Below is layout defined for it:

Here a ListView component is defined to included the records stored in the database. Initially the ListView would be empty hence a TextView is used to display the same.

In this activity the DBManager object is invoked to perform the CRUD Operations.

A SimpleCursorAdapter is defined to add elements to the list from the query results that are returned in an Cursor Object.
On list item click an intent is performed to open the ModifyCountryActivity class.

The menu contains an item to add a new record from the ActionBar. Here again an intent is performed to open the AddCountryActivity class. Below is menu.xml code.

The xml layout and code of AddCountryActivity.java file are defined below:

Two EditText components that take the inputs for country and currency along with a button to add the values to the database and display it in the ListView are defined.

The CRUD operation performed here is adding a new record to the database.

The xml layout and code of ModifyCountryActivity.java file are defined below:

It’s similar to the previous layout except that modify and delete buttons are added.

The CRUD operations performed here are updating and deleting a record.

The below images are the screenshots of the final output of our project.

The first image is the output seen when the application is launched for the first time.

The second image is the result of clicking the menu option from the ActionBar to add a new record as shown below.

The third image shows an output when 3 records are added :

The fourth image shows the output when any list item is clicked to modify or delete a record :

The final image is the output when a record is deleted. In this example we delete the first record :

Opening the Android SQLite Database file

As we’ve discussed earlier in this tutorial, the database file is stored in the internal storage that is accessible from the Android Device Monitor as visible in the pic below.

To view this database we need to pull this file from the device to our desktop. This is done by clicking the menu option in the top right as seen in the image below :

To open this file download the SQLiteBrowser from this link.

The snippets below show the schema and tables in the browser.

To view the table go to the Browse Data tab on top. The following image is seen:

This brings an end to Android SQLite tutorial. The final Android SQLite Project is downloadable from the below link.

База данных для Android. Интегрируем SQLite быстро, без регистрации и СМС

Содержание статьи

Приложение или браузер

Мобильные приложения становятся логичным развитием интернет-сайтов. В целом они эффективней используют ресурсы устройства, да и возможностей по работе с данными тут больше. Часто веб-разработчики сталкиваются с естественными ограничениями мобильных устройств — отсутствием флеша, тормозами страницы из-за перегруженности и другими. И никто не будет спорить, что работать с картами или почтой удобней в нативных программах, а не в браузере.

Использование базы данных поможет сохранить все необходимые пользователю данные, и это очень круто. Все возможности приложения будут доступны, даже если пользователь уедет в тайгу, где интернета никогда и не было. Когда-то давно, целых полтора года назад, наш журнал уже делал обзор способов сохранения данных в Android, но база данных заслуживает отдельной статьи.

Кешируем всё

В Android из коробки база данных присутствует в виде библиотеки SQLite, которую даже не нужно как-то подключать или запрашивать на нее разрешение у пользователя. Чтобы понять, насколько она полезна, напишем полноценное приложение, которое будет загружать данные из интернета и кешировать их, а затем выдавать их в любых условиях: в дождь, мороз и дисконнект.

SQLite — легковесный фреймворк, который, с одной стороны, дает по максимуму использовать возможности SQL, с другой — бережно относится к ресурсам устройства. Его недостатки малокритичны для мобильной разработки: к примеру, нет индексов для LIKE-запросов и есть лимиты на размер базы данных.

Сериализация и JSON

Самое время поговорить о контенте: в принципе, нам абсолютно неважно, что кешировать. Тем не менее хранить в БД все подряд не стоит: если это будут какие-то разовые записи или отметки о состоянии Activity, лучше использовать SharedPreferences. Как и во «взрослых» системах, база данных предназначена для сохранения большого объема структурированной информации: каталога товаров, списка задач, новостных блоков и так далее.

Грамотные люди передаваемые по сети данные сначала сериализуют — то есть конвертируют в некую последовательность байтов. Существует несколько способов сериализации, каждый из которых хорош по-своему. Несколько лет назад был популярен формат XML, но в условиях больших объемов конвертеры XML довольно сильно грузят процессор, что критично для мобильных устройств.

На смену XML пришел формат JSON, который, пожалуй, уже стал стандартом. Он не только прост в парсинге, но и удобен для веб-разработчиков: например, он легко разбирается с помощью JavaScript. Формат JSON довольно прост и легко читается как приложениями, так и просто глазами. Для примера я взял список пользователей с несколькими параметрами — имя, описание, собственный идентификатор и картинка-аватар.

Рис. 1. Как парсить JSON

Такой массив данных довольно легко раскладывается в Java-объект. Создать класс с нужным содержанием можно руками или воспользоваться конвертерами, которые ищутся по запросу json to java. Такой конвертер самостоятельно разберет поля и добавит аннотации с указанием полей.

Загрузив JSON в приложение, его нужно будет разложить по полям в подготовленный Java-объект. Для этого тоже есть готовые решения. Мне нравятся библиотека Retrofit и конвертер Gson Converter, о которых мы не раз писали. Если нет каких-то экзотических требований к сетевым запросам — Retrofit тебе однозначно подойдет.

CRUD и DAO

Принцип построения таблиц и связей между ними ничем не отличается от классического SQL. Под созданный JSON я решил выделить две таблицы: в одной будет вся текстовая информация, а в другой набор изображений. Выделять изображения в отдельную таблицу есть смысл для экономии памяти — несколько пользователей могут иметь одинаковые аватарки, тогда их не придется дублировать.

Рис. 2. Схема базы данных


При работе с БД удобно пользоваться несколькими паттернами, которые помогают не изобретать велосипеды и при этом реализовать всё, что нужно. Базовый набор запросов содержится в акрониме CRUD — create, read, update и delete . А еще в ООП есть свои шаблоны кода, которые тоже придуманы не зря. Все CRUD-запросы рекомендуется реализовать через паттерн DAO — data access object . Он подразумевает под собой создание интерфейса, в котором будут обозначены необходимые методы.

Конечно, сейчас в нашей программе этот интерфейс выглядит излишним, но в будущем может выручить: абстрактные классы и интерфейсы помогают не забыть, какая именно функциональность требуется в проекте.

SQLiteOpenHelper

Язык SQL-запросов ближе к процедурному программированию, чем к ООП, поэтому для работы с БД в Android создан отдельный класс SQLiteOpenHelper . Он позволяет общаться с базой данных на привычном для Java-разработчика языке методов и классов. Как обычно, создаем свой объект, дополняя его необходимыми данными — названием и версией БД.

При генерации SQL-запросов нужно будет постоянно указывать названия таблиц и полей. Чтобы свести к минимуму вероятность опечаток, удобно использовать строковые константы, превратив названия полей в переменные.

И хотя принципы работы с БД максимально приближены к логике ООП-разработки, от синтаксиса SQL никуда не денешься. Если у тебя есть пробелы в знаниях — почитай какой-нибудь мануал для начинающих. В большинстве случаев базовых знаний будет достаточно.

Класс SQLiteOpenHelper требует обязательного переопределения методов, используемых при инициализации, — методов создания, открытия и обновления базы данных. В onCreate необходимо задать команды для создания таблиц внутри базы данных, он будет вызван системой самостоятельно при первоначальной инициализации базы данных.

Поскольку структура базы может меняться, нужно реализовать метод onUpgrade, который будет стирать созданное ранее.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Использование SQLite.NET с Android Using SQLite.NET with Android

Библиотека SQLite.NET, которую Xamarin рекомендует, — это очень простая модель ORM, которая позволяет легко хранить и извлекать объекты в локальной базе данных SQLite на устройстве Android. The SQLite.NET library that Xamarin recommends is a very basic ORM that lets you easily store and retrieve objects in the local SQLite database on an Android device. ORM означает объектно-реляционное сопоставление – API, который позволяет сохранять и извлекать «объекты» из базы данных без написания инструкций SQL. ORM stands for Object Relational Mapping – an API that lets you save and retrieve «objects» from a database without writing SQL statements.

Чтобы включить библиотеку SQLite.NET в приложение Xamarin, добавьте в проект следующий пакет NuGet: To include the SQLite.NET library in a Xamarin app, add the following NuGet package to your project:

  • Имя пакета: SQLite-NET-PCL Package Name: sqlite-net-pcl
  • Автор: Федор A. Круежер Author: Frank A. Krueger
  • Идентификатор: sqlite-net-pcl Id: sqlite-net-pcl
  • URL-адрес:NuGet.org/Packages/SQLite-NET-PCLUrl:nuget.org/packages/sqlite-net-pcl

Доступно несколько различных пакетов SQLite. Убедитесь, что выбран правильный вариант (возможно, он не является самым максимальным результатом поиска). There are a number of different SQLite packages available – be sure to choose the correct one (it might not be the top result in search).

Получив доступ к библиотеке SQLite.NET, выполните следующие три шага, чтобы использовать ее для доступа к базе данных. Once you have the SQLite.NET library available, follow these three steps to use it to access a database:

Добавьте инструкцию using – добавьте следующую инструкцию в файлы C# , где требуется доступ к данным: Add a using statement – Add the following statement to the C# files where data access is required:

Создайте пустую базу данных , – ссылку на базу данных можно создать, передав путь к файлу в конструкторе класса склитеконнектион. Create a Blank Database – A database reference can be created by passing the file path the SQLiteConnection class constructor. Не нужно проверять, существует ли файл, – он будет автоматически создан при необходимости, в противном случае будет открыт существующий файл базы данных. You do not need to check if the file already exists – it will automatically be created if required, otherwise the existing database file will be opened. Переменная dbPath должна быть определена в соответствии с правилами, описанными ранее в этом документе: The dbPath variable should be determined according the rules discussed earlier in this document:

Сохранить данные – после создания объекта склитеконнектион команды базы данных выполняются путем вызова своих методов, таких как CreateTable и INSERT следующим образом: Save Data – Once you have created a SQLiteConnection object, database commands are executed by calling its methods, such as CreateTable and Insert like this:

Получение данных – для получения объекта (или списка объектов) используйте следующий синтаксис: Retrieve Data – To retrieve an object (or a list of objects) use the following syntax:

Пример базового доступа к данным Basic Data Access Sample

Пример кода DataAccess_Basic для этого документа выглядит следующим образом при работе в Android. The DataAccess_Basic sample code for this document looks like this when running on Android. В коде показано, как выполнять простые операции SQLite.NET и выводить результаты в виде текста в главном окне приложения. The code illustrates how to perform simple SQLite.NET operations and shows the results in as text in the application’s main window.

Android Android

В следующем примере кода показано взаимодействие базы данных с использованием библиотеки SQLite.NET для инкапсуляции базового доступа к базе данных. The following code sample shows an entire database interaction using the SQLite.NET library to encapsulate the underlying database access. Он показывает: It shows:

Создание файла базы данных Creating the database file

Вставка данных путем создания объектов и последующего их сохранения Inserting some data by creating objects and then saving them

Запрос данных Querying the data

Необходимо включить следующие пространства имен: You’ll need to include these namespaces:

Последний требует добавления SQLite в проект. The last one requires that you have added SQLite to your project. Обратите внимание, что таблица базы данных SQLite определяется путем добавления атрибутов к классу (класс Stock ), а не команды CREATE TABLE. Note that the SQLite database table is defined by adding attributes to a class (the Stock class) rather than a CREATE TABLE command.

Использование атрибута [Table] без указания параметра имени таблицы приведет к тому, что имя базовой таблицы базы данных будет совпадать с именем класса (в данном случае — «фондовой биржи»). Using the [Table] attribute without specifying a table name parameter will cause the underlying database table to have the same name as the class (in this case, «Stock»). Фактическое имя таблицы важно, если вы пишете SQL-запросы непосредственно к базе данных, а не используете методы доступа к данным ORM. The actual table name is important if you write SQL queries directly against the database rather than use the ORM data access methods. Аналогично, атрибут [Column(«_id»)] является необязательным, и при отсутствии столбца в таблицу будет добавлен столбец с тем же именем, что и у свойства в классе. Similarly the [Column(«_id»)] attribute is optional, and if absent a column will be added to the table with the same name as the property in the class.

Атрибуты SQLite SQLite Attributes

Общие атрибуты, которые можно применять к классам для управления их хранением в базовой базе данных, включают: Common attributes that you can apply to your classes to control how they are stored in the underlying database include:

[PrimaryKey] – этот атрибут можно применить к целочисленному свойству, чтобы принудительно использовать первичный ключ базовой таблицы. [PrimaryKey] – This attribute can be applied to an integer property to force it to be the underlying table’s primary key. Составные первичные ключи не поддерживаются. Composite primary keys are not supported.

[AutoIncrement] – этот атрибут приведет к автоматическому приращению значения целочисленного свойства для каждого нового объекта, вставленного в базу данных [AutoIncrement] – This attribute will cause an integer property’s value to be auto-increment for each new object inserted into the database

[Column (Name)] – при указании необязательного параметра name будет переопределять значение по умолчанию для имени столбца базовой базы данных (то же, что и свойство). [Column(name)] – Supplying the optional name parameter will override the default value of the underlying database column’s name (which is the same as the property).

[Table (Name)] – помечает класс как способный храниться в базовой таблице SQLite. [Table(name)] – Marks the class as being able to be stored in an underlying SQLite table. Указание необязательного параметра name переопределит значение по умолчанию для имени базовой таблицы базы данных (которое совпадает с именем класса). Specifying the optional name parameter will override the default value of the underlying database table’s name (which is the same as the class name).

[MaxLength (значение)] – ограничения длины свойства текста при попыток вставки базы данных. [MaxLength(value)] – Restrict the length of a text property, when a database insert is attempted. Использование кода должно проверить это перед вставкой объекта, так как этот атрибут является «checked» только при попытке выполнить операцию вставки или обновления базы данных. Consuming code should validate this prior to inserting the object as this attribute is only ‘checked’ when a database insert or update operation is attempted.

[Ignore] – приводит к тому, что SQLite.NET игнорирует это свойство. [Ignore] – Causes SQLite.NET to ignore this property. Это особенно полезно для свойств, имеющих тип, который не может храниться в базе данных, или свойства, которые не могут быть автоматически разрешены SQLite. This is particularly useful for properties that have a type that cannot be stored in the database, or properties that model collections that cannot be resolved automatically by SQLite.

[Unique] – гарантирует уникальность значений в столбце базовой базы данных. [Unique] – Ensures that the values in the underlying database column are unique.

Большинство этих атрибутов являются необязательными, SQLite будет использовать значения по умолчанию для имен таблиц и столбцов. Most of these attributes are optional, SQLite will use default values for table and column names. Всегда следует указывать целочисленный первичный ключ, чтобы можно было эффективно выполнять запросы на выборку и удаление данных. You should always specify an integer primary key so that selection and deletion queries can be performed efficiently on your data.

Более сложные запросы More Complex Queries

Следующие методы SQLiteConnection можно использовать для выполнения других операций с данными: The following methods on SQLiteConnection can be used to perform other data operations:

Insert – добавляет новый объект в базу данных. Insert – Adds a new object to the database.

Получите – пытается получить объект с помощью первичного ключа. Get – Attempts to retrieve an object using the primary key.

Таблица – возвращает все объекты в таблице. Table – Returns all the objects in the table.

Delete – удаляет объект, используя его первичный ключ. Delete – Deletes an object using its primary key.

Запрос – выполнения SQL-запроса, возвращающего несколько строк (в виде объектов). Query – Perform an SQL query that returns a number of rows (as objects).

Выполнить – используйте этот метод (и не Query ), если не предполагается, что строки возвращаются из SQL (например, инструкции INSERT, Update и DELETE). Execute – Use this method (and not Query ) when you don’t expect rows back from the SQL (such as INSERT, UPDATE and DELETE instructions).

Получение объекта по первичному ключу Getting an object by the primary key

SQLite.Net предоставляет метод Get для получения одного объекта на основе его первичного ключа. SQLite.Net provides the Get method to retrieve a single object based on its primary key.

Выбор объекта с помощью LINQ Selecting an object using Linq

Методы, возвращающие коллекции, поддерживают IEnumerable так что можно использовать LINQ для запроса или сортировки содержимого таблицы. Methods that return collections support IEnumerable so you can use Linq to query or sort the contents of a table. В следующем коде показан пример использования LINQ для фильтрации всех записей, начинающихся с буквы «A»: The following code shows an example using Linq to filter out all entries that begin with the letter «A»:


Выбор объекта с помощью SQL Selecting an object using SQL

Несмотря на то, что SQLite.Net может предоставлять доступ к данным на основе объектов, иногда может потребоваться более сложный запрос, чем разрешено LINQ (или может потребоваться более высокая производительность). Even though SQLite.Net can provide object-based access to your data, sometimes you might need to do a more complex query than Linq allows (or you may need faster performance). Вы можете использовать команды SQL с методом query, как показано ниже: You can use SQL commands with the Query method, as shown here:

При написании инструкций SQL напрямую вы создаете зависимость от имен таблиц и столбцов в базе данных, которые были созданы из классов и их атрибутов. When writing SQL statements directly you create a dependency on the names of tables and columns in your database, which have been generated from your classes and their attributes. При изменении этих имен в коде следует помнить, что необходимо обновить все инструкции SQL, написанные вручную. If you change those names in your code you must remember to update any manually written SQL statements.

Удаление объекта Deleting an object

Первичный ключ используется для удаления строки, как показано ниже: The primary key is used to delete the row, as shown here:

Можно проверить rowcount , чтобы подтвердить, сколько строк было затронуто (в этом случае удалено). You can check the rowcount to confirm how many rows were affected (deleted in this case).

Использование SQLite.NET с несколькими потоками Using SQLite.NET with Multiple Threads

SQLite поддерживает три различных режима работы с потоками: один поток, несколько потокови сериализованный. SQLite supports three different threading modes: Single-thread, Multi-thread, and Serialized. Если требуется получить доступ к базе данных из нескольких потоков без каких бы то ни было ограничений, можно настроить SQLite для использования сериализованного режима потоков. If you want to access the database from multiple threads without any restrictions, you can configure SQLite to use the Serialized threading mode. Важно установить этот режим на ранних этапах работы приложения (например, в начале метода OnCreate ). It’s important to set this mode early in your application (for example, at the beginning of the OnCreate method).

Чтобы изменить режим потоковой обработки, вызовите SqliteConnection.SetConfig . To change the threading mode, call SqliteConnection.SetConfig . Например, эта строка кода настраивает SQLite для сериализованного режима: For example, this line of code configures SQLite for Serialized mode:

Версия SQLite для Android имеет ограничение, которое требует еще нескольких шагов. The Android version of SQLite has a limitation that requires a few more steps. Если вызов SqliteConnection.SetConfig создает исключение SQLite, такое как library used incorrectly , необходимо использовать следующее решение: If the call to SqliteConnection.SetConfig produces a SQLite exception such as library used incorrectly , then you must use the following workaround:

Ссылка на собственную библиотеку libsqlite.so , чтобы интерфейсы API sqlite3_shutdown и sqlite3_initialize были доступны приложению: Link to the native libsqlite.so library so that the sqlite3_shutdown and sqlite3_initialize APIs are made available to the app:

В самом начале OnCreate ного метода добавьте этот код, чтобы завершить работу SQLite, настроить его для работы в сериализованном режиме и повторно инициализировать SQLite: At the very beginning of the OnCreate method, add this code to shutdown SQLite, configure it for Serialized mode, and reinitialize SQLite:

Как просмотреть базу данных SQLite на устройстве Andro >

У меня есть набор данных в базе данных SQLite. Мне нужно просмотреть базу данных на устройстве. Как мне это сделать?

Я проверил режим ddms. Данные в проводнике файлов пусты.

Вот пошаговые инструкции (в основном, взятые из комбинации других ответов). Это работает даже на устройствах, которые не внедрены.

Подключите устройство и запустите приложение в режиме отладки.

Вы можете использовать adb -d shell «run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/» чтобы узнать, что такое имя файла базы данных.

Примечание. com.yourpackge.name – это имя вашего пакета приложений. Вы можете получить его из файла манифеста.

Скопируйте файл базы данных из папки приложения на SD-карту.

adb -d shell «run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite»

Примечание. Filename.sqlite – это имя вашей базы данных, которое вы использовали при создании базы данных

Вытяните файлы базы данных на свой компьютер:

adb pull /sdcard/filename.sqlite

Это скопирует базу данных с SD-карты на место, где находится ваш ADB.

Откройте Firefox SQLite Manager (Tools-> SQLite Manager) и откройте файл базы данных с шага 3 выше.

Лучшим способом просмотра и управления вашей базой данных приложений Android является использование библиотеки DatabaseManager_For_Android .

Это один файл активности Java; Просто добавьте его в свою исходную папку. Вы можете просматривать таблицы в своей базе данных приложений, обновлять, удалять, вставлять строки в таблицу. Все изнутри вашего приложения.

После завершения разработки удалите файл Java из папки src. Вот и все.

Вы можете просмотреть 5-минутную демонстрацию, Database Manager для Android SQLite Database .

Взятый отсюда , вы можете попробовать:

  1. Библиотека Stetho с открытым исходным кодом Facebook

Инициализировать библиотеку в объекте приложения:

И вы можете просмотреть свою базу данных в Chrome от chrome://inspect

  1. Другим вариантом является этот плагин (не бесплатный)

Если вы используете реальное устройство и оно не внедрено, тогда невозможно увидеть вашу базу данных в FileExplorer , потому что из-за какой-то причины безопасности эта папка заблокирована в системе Android. И если вы используете его в эмуляторе, вы найдете его в FileExplorer , / data / data / имя вашего пакета / databases / yourdatabse.db .

Лучший способ, который я нашел до сих пор, – использовать инструмент Android-Debug-Database.

Его невероятно прост в использовании и настройке, просто добавьте зависимость и подключитесь к интерфейсу базы данных устройства через Интернет. Не нужно укорачивать телефон или добавлять какие-либо действия или что-то еще. Вот шаги:

ШАГ 1

Добавьте следующую зависимость к файлу gradle вашего приложения и запустите приложение.

ШАГ 2

Откройте ваш браузер и перейдите на IP-адрес вашего телефона на порт 8080. URL-адрес должен быть следующим: http://YOUR_PHONE_IP_ADDRESS:8080 . Вам будет представлено следующее:

Чтобы получить IP-адрес myphone, я в настоящее время использую Ping Tools, но есть много альтернатив.

ШАГ 3

Вы можете сделать это:

  1. adb shell
  2. cd /go/to/databases
  3. sqlite3 database.db
  4. В .tables строке sqlite> введите .tables . Это даст вам все таблицы в файле database.db.
  5. select * from table1;

Попробуйте AndroidDBvieweR !

  • Нет необходимости, чтобы ваше устройство было ЗАКРЫТО
  • Нет необходимости импортировать файл базы данных приложения
  • Несколько конфигураций, и вам хорошо идти!

Если вы не хотите использовать

  1. ADB
  2. Сторонняя библиотека или
  3. Зависимость градиента и т. Д.


И просто хотите получить файл базы данных в SDCard , это решение.

Скопируйте класс DatabaseUtil.java в свой проект

И просто вызовите метод copyDatabaseToExtStg () из любой активности вашего приложения

Это скопирует папку базы данных по адресу sdcard / shanraisshan / your_database_file

Для дальнейшего подробного объяснения проверьте Android-Database-Viewer на Github. https://github.com/shanraisshan/Android-Database-Viewer

Хотя это не позволяет напрямую просматривать базу данных на вашем устройстве, я опубликовал простой сценарий оболочки для сброса баз данных на ваш локальный компьютер:

Он выполняет два различных метода, описанных здесь:

  1. Во-первых, он пытается сделать файл доступным для других пользователей и пытается вытащить его с устройства.
  2. Если это не удается, оно передает содержимое файла через терминал на локальный компьютер. Он выполняет дополнительный трюк для удаления символов \r которые некоторые устройства выводят в оболочку.

Здесь вы можете использовать различные приложения CLI или GUI SQLite, такие как sqlitebrowser или sqlitebrowser , для просмотра содержимого базы данных.

Я использую SQLite Database Browser для просмотра базы данных SQLite DB в Android-разработке. Сначала вы должны вывести файл базы данных с устройства, а затем открыть его в SQLite DB Browser.

Попробуйте facebook Stetho.

Stetho – это отладочный мост для приложений для Android, позволяющий использовать мощные инструменты для разработчиков Chrome и многое другое.

Надеюсь, это поможет вам

Использование терминала Сначала укажите местоположение, в котором sdk andriod отключен

Затем проверьте список подключенных устройств.

А затем запустите эту команду, чтобы скопировать файл с устройства в вашу систему

Вы можете найти файл базы данных по этому пути

Следуй этим шагам

1 > Загрузите файл * .jar отсюда .

2 > Поместите файл * .jar в папку eclipse / dropins / и перезапустите eclipse.

3 > В правом верхнем углу затмения щелкните значок DDMS.

4 > Выберите правильный эмулятор на левой панели.

5 На вкладке «Проводник» на главной панели перейдите в /data/data/[YOUR.APP.NAMESPACE]/databases.

6 > Под значком DDMS при выборе базы данных должен появиться новый синий значок базы данных. Нажмите на нее, и вы увидите вкладку Questoid Sqlite Manager, открывающуюся для просмотра ваших данных.

* Примечание. Если база данных не загорается, это может быть связано с тем, что в вашей базе данных нет расширения * .db. Убедитесь, что ваша база данных называется [DATABASE_NAME] .db

* Примечание: если вы хотите использовать БД без расширения .db-Extension:

-Загрузить этот Questoid SqLiteBrowser: скачать здесь .

-Unzip и поместите его в eclipse / dropins (а не в плагины).

-Проверьте это для получения дополнительной информации Нажмите здесь .

Это работает с Android 6.0 (отладочные приложения как минимум):

Затем вы просто можете просмотреть БД с помощью aSQLiteManager .

Вы можете попробовать SQLiteOnWeb . Он управляет вашей базой данных SQLite в браузере.

Шаг 1 Скопируйте этот класс в свой пакет.

Шаг 2 поместите следующий код в свой класс, который расширяет SQLiteOpenHelper.

Шаг 3 зарегистрировать в манифесте

Шаг 4

В Eclipse есть браузер Android SQLite от TKlerx, и он полностью функциональен вместе с Android Studio. Я рекомендую это, потому что это очень практично.

Чтобы установить его на Device Monitor, просто поместите JAR-файл в папку [Path to Android SDK folder]/sdk/tools/lib/monitor-[. ]/plugins .

Используя проводник файлов, вы можете найти файл своей базы данных следующим образом:

Затем вы можете использовать любой SQLite для изучения вашей базы данных. Я использую аддон SQLite Manager Firefox. Это хорошо, мало и быстро.

Я нашел очень простой библиотечный stetho для просмотра sqlite db приложения в хром, см.

Я написал собственный скрипт для получения файла DB с устройства. Без корня. Работает нормально.

    Скопируйте сценарий в каталог с помощью adb (например:

/android-sdk/platform-tools ).

  • Устройство должно быть подключено к ПК.
  • Используйте ./getDB.sh -p

    для получения имени баз данных.

    Использование: ./getDB.sh -p

    -n -s для получения файла DB в этом (где выполняется скрипт).

    Я рекомендую вам установить имя файла DB как * .sqlite и открыть его с помощью Firefox addon: SQLite Manager.

    (Это долгое время, когда я написал что-то в Bash. Вы можете отредактировать этот код.)

    Цукерберг рекомендует:  Языки программирования и страны
  • Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих