it-roy-ru.com

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

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

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

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

Есть ли какой-либо инструмент или другие методы, чтобы показать данные?

6
Bivin Vinod

Если вы хотите показать данные на 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 или щелкните значок «Монитор устройств» рядом с SDK Manager на панели инструментов.
  2. Откроется окно «Монитор устройства». На вкладке File Explorer нажмите 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 Studio. В правой части нижнего угла есть одна опция, например Device File Explorer. Нажмите на эту кнопку. 

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

 enter image description here

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

7
Ali

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

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

5
Bmbariah

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

root не нужен (если его нет на sdcard, следуйте ответу @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..

3
Iddo

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

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

Выполните данные шаги:

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

    оболочка adb запускается как [пакет] chmod 777/данные/данные/[пакет]/базы данных/[имя_файла_db]

    оболочка adb запускается как [пакет] cp/data/data/[пакет]/database/[db_file_name]/sdcard /

    adb pull/sdcard/[db_file_name]

4.Проверьте вытащенную БД SQLite в папке sdk> platform-tools

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

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

Android.permission.WRITE_EXTERNAL_STORAGE Android.permission.READ_EXTERNAL_STORAGE

2
Ankit

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

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

0
Aditya Rohilla