Как получить живое представление вставленных данных в базу данных Sqlite в Android Studio

Пожалуйста, помогите мне с этой проблемой.

Я вставляю значения в свою базу данных Sqlite.

Как я могу проверить или просмотреть вставленные данные.

Есть ли какой-либо инструмент или другие методы для отображения данных?

Поиск по контент-провайдеру

Elsunhoty 11.03.2018 07:36

вы хотите видеть эти данные в файле .db или отображать их в приложении?

Amrish Kakadiya 11.03.2018 07:38

ваши записи контактов в журнал :) @BivinVinod

Ali 11.03.2018 07:42

Пожалуйста, обратитесь к этому, stackoverflow.com/questions/19194576/…

Nagesh Jatagond 11.03.2018 07:42

Получите базу данных из папки данных с помощью монитора устройства Android. Затем откройте файл .db с помощью браузера sqlite. Скачать по этой ссылке: sqlitebrowser.org

Dinith Rukshan Kumara 11.03.2018 08:16

@elsunhoty вам не нужен обмен данными между процессами только для вставки значений в sqlite

EpicPandaForce 12.03.2018 08:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
8
6
10 868
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Если вы хотите показать данные на Log, попробуйте следующий код:

for (Contact cn : contacts) {
            String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
                // Writing Contacts to log
        Log.d("Name: ", log);

Другой способ показать database см. Ниже шаги:

  1. Перейдите к Tools -> DDMS или щелкните значок Device Monitor рядом с SDK Manager на панели инструментов.
  2. Откроется окно Device Monitor. На вкладке проводника нажмите data -> data -> your project name.. После этого откроется файл с базами данных. Щелкните pull a file from device icon.. Сохраните файл с расширением .db.
  3. Откройте FireFox, нажмите Alt, Tools -> SQLiteManager.
  4. Следуйте за базой данных -> подключитесь к базе данных -> просмотрите файл базы данных и нажмите ОК. Ваш файл SQLite откроется.

Если Вы скачиваете базу данных на DDMS, то Вы скачиваете

DB.Browser.for.SQLite-3.10.1-win64

и поместите файл database в это программное обеспечение, и вы получите данные.


НОВОЕ ОБНОВЛЕНИЕ DDMS

  • Я обновлю свой ответ до тех пор, пока не обновится Android Studio в Android Studio 3.1 или до другой версии, такой как сейчас 3.2, в этой студии. Функция DDMS недоступна, но не волнуйтесь, у меня есть другое решение.

  • В вашей студии Android См. Правую сторону в нижнем углу есть один вариант, например Проводник устройства Нажмите эту кнопку

После этого вы можете увидеть, как на вашем экране открыто изображение ниже:

Теперь выберите data -> data -> your project name. :)

Подход DDMS не работает на некорневом устройстве

Я следую Как проверить базу данных на устройстве Android без рута, чтобы импортировать базу данных Sqlite с устройства на ПК.

Следуйте приведенным ниже инструкциям:

  1. Откройте терминал в Android Studio
  2. Измените каталог по умолчанию на your_path_to> SDK> platform-tools>
  3. adb shell run-as [пакет] chmod 777 / data / data / [пакет] / баз данных /

    adb shell run-as [пакет] chmod 777 / data / data / [пакет] / баз данных / [db_file_name]

    adb shell run-as [пакет] cp / data / data / [package] / databases / [db_file_name] / sdcard /

    adb pull / sdcard / [имя_файла_бД]

4.Проверьте извлеченную базу данных SQLite в папке sdk> platform-tools

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

Примечание. В файле манифеста требуются два разрешения, иначе данные не будут скопированы в извлеченную БД.

android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_EXTERNAL_STORAGE

Не могу поверить, что никто об этом не упомянул, но вы, вероятно, ищете База данных отладки Android

Также отлично работает с Android Room, и вы можете просматривать, редактировать таблицы и записи.

Хотя вы одобрили ответ Cassius Clay's, если вам нужно обработать необработанные данные

root не нужен (если его нет на SD-карте, следуйте ответу @Ankit)

import os
import sys
import subprocess
import sqlite3
import pandas as pd

arg_folder = sys.argv[1]  # root folder to recursively search db files from
output_lines = subprocess.check_output(['adb', 'shell', ('ls -R %s' % arg_folder)]).decode('utf-8').splitlines()
db_files = []
current_folder = ''
for line in output_lines:
    """
        Output example for 'ls -R /data/data':
            /data/data/org.fdroid.fdroid/files/fdroid/repo/icons:

            /data/data/org.fdroid.fdroid/shared_prefs:
            apks-pending-install.xml
            org.fdroid.fdroid_preferences.xml

            /data/data/ru.meefik.busybox:
            cache
            files
            lib
            shared_prefs

        if line contains '/' it's a directory, we want to extract the full path for '.db' files
    """
    if line.__contains__('/'):
        current_folder = line
    elif line.endswith('.db'):
        db_files.append('%s/%s' % (current_folder[:-1], line))
print("Listing databases..")

while True:
    try:
        for idx, full_path in enumerate(db_files):
            print("{}) {}".format(idx + 1, full_path))
        i = input("Enter database number : ")
        db = db_files[int(i) - 1]  # selected database
        subprocess.check_output(['adb', 'pull', db])  # pulling the .db file from device to local
        db = db.split('/')[-1]  # "/data/data/com.app/folder/private.db".split('/')[-1] = private
        conn = sqlite3.connect(db)
        # getting list of current database tables
        tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
        for table in tables:
            table = table[0]  # little fix, it comes as a tuple
            print('%s%s' % (db[:-2], table))
            with pd.option_context('display.width', 1000):  # setting terminal width to view all table columns inline
                print(pd.read_sql_query("SELECT * FROM %s" % table, conn))  # print table content
            print('- ' * 50)  # table print separator
        # cleanup
        if input('remove database file (from local) [y/N] ? ').lower() == 'y':
            print('removing ', db)
            os.remove(db)
        # repeat
        c = input("Press ENTER to continue or CTRL+C to Quit..")
    except KeyboardInterrupt:
        exit(0)

preview 2..

Вот менее дружелюбный для человека очень длинный однострочный

read -p "enter root folder to recursively search db files from: " f;dbs=( $(adb shell ls -R $f |
    while read line
    do
        line=$(echo $line | tr -d '\r')
        if [[ "$line" =~ ^/.*:$ ]]
        then
            dir=${line%:}
        elif [[ "$line" = "opendir failed" ]]
        then
            echo "$dir - permission denied"
        else
            if [[ "$dir" = "/" ]]; then dir = ""; fi
            echo "$dir/$line" | grep '\.db$'
        fi
    done)
);echo ${dbs[@]}; dbs+=(exit);select db in "${dbs[@]}"; do
  [[ $db == exit ]] && break
  echo "You have chosen $db"
  adb pull $db
  python -c 'import sqlite3;import pandas as pd;db=sqlite3.connect("'${db##*/}'");tables=db.cursor().execute("SELECT name FROM sqlite_master WHERE type=\"table\";").fetchall();print([pd.read_sql_query("SELECT * FROM %s" % t[0], db) for t in tables]);'
done

GIF, потому что мне лень документировать

preview..

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

Все, что вам нужно сделать, это просто поместить зависимость, скомпилировать и запустить программу, вы найдете ссылку вроде (your_package_name D / DebugDB: Open http://172.16.6.117:8081 в вашем браузере) в logcat, которая покажет всю вашу БД в браузере

Ответ принят как подходящий

Лучший инструмент отладки Sqlite для приложений Android - это

Stetho By Facebook

http://facebook.github.io/stetho/

Stetho - это сложный мост отладки для приложений Android. Если этот параметр включен, разработчики получают доступ к функциям Chrome Developer Tools, изначально являющимся частью настольного браузера Chrome. Разработчики также могут включить дополнительный инструмент dumpapp, который предлагает мощный интерфейс командной строки для внутренних компонентов приложения.

Скачать или В качестве альтернативы вы можете включить Stetho из Maven Central через Gradle или Maven.

 // Gradle dependency on Stetho 
  dependencies { 
    compile 'com.facebook.stetho:stetho:1.5.1' 
  } 
  <dependency>
    <groupid>com.facebook.stetho</groupid> 
    <artifactid>stetho</artifactid> 
    <version>1.5.1</version> 
  </dependency> 

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

    dependencies { 
        compile 'com.facebook.stetho:stetho-okhttp3:1.5.1' 
      } 

Или же

 dependencies { 
    compile 'com.facebook.stetho:stetho-okhttp:1.5.1' 
  } 

Или же

 dependencies { 
    compile 'com.facebook.stetho:stetho-urlconnection:1.5.1' 
  }

Интеграции

Настраивать

Предполагается, что интеграция со Stetho будет простой и простой для большинства существующих приложений Android. В вашем Application class: есть простой этап инициализации.

public class MyApplication extends Application {
  public void onCreate() {
    super.onCreate();
    Stetho.initializeWithDefaults(this);
  }
}

Это вызывает большую часть конфигурации по умолчанию, но не включает некоторые дополнительные перехватчики (в первую очередь, проверку сети). См. Ниже подробные сведения об отдельных подсистемах.

Enable Network Inspection

Если вы используете популярную библиотеку OkHttp в выпуске 2.2.x + или 3.x, вы можете использовать систему Interceptors для автоматического подключения к существующему стеку. В настоящее время это самый простой и понятный способ включить проверку сети.

Для OkHttp 2.x

OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());

Для OkHttp 3.x

 new OkHttpClient.Builder()
        .addNetworkInterceptor(new StethoInterceptor())
        .build();

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

Если вы используете HttpURLConnection, вы можете использовать StethoURLConnectionManager для помощи в интеграции, хотя вы должны знать, что у этого подхода есть некоторые предостережения. В частности, вы должны явно добавить Accept-Encoding: gzip в заголовки запросов и вручную обрабатывать сжатые ответы, чтобы Stetho сообщал о размерах сжатых полезных данных.

Sqlite Databases

для получения дополнительной информации посетите стето

Другие вопросы по теме