Intereting Posts
Android: создание кругового TextView? Оверлей экрана обнаружены блоки Android-разрешения Можно ли изменить доменное имя компании в андроид-студии после создания проекта? Проверьте, пуст ли EditText. Как сделать прозрачный слой над элементом CardIView? Существует ли максимальный размер для внутреннего хранилища android для приложения? Android – Фрагмент экрана вращается Как добавить веб-просмотр crosswalk в моем собственном модуле библиотеки Android? Что такое MediaPlayer.OnInfoListener "код 703"? Android NDK: включение библиотеки boost c ++ Использование проекта Scala with Gradle для Android Добавить зависимости через gradle для затмения в проекте android Файлы Java не найдены, которые расширяют CordovaActivity. При использовании "кордовы строить" Центральные элементы HorizontalScrollView, когда этого недостаточно, чтобы прокрутить CollapsingToolbarLayout с tablayout и изображением как рушится с липкой панелью инструментов

Расположение базы данных sqlite на устройстве

Я создал базу данных sqlite программным способом с расширением SQLiteOpenHelper по умолчанию и переопределением onCreate() . Таким образом, db создается на лету, когда это необходимо.

Я хотел бы проверить содержимое файла db на моей машине OS X с помощью SQL-браузера. Я знаю имя файла db, но я не могу найти его на устройстве. Я подключился к устройству через USB и посмотрел с помощью finder и terminal, но я просто не могу найти файл db.

Каково местоположение по умолчанию для баз данных sqlite на устройстве Android?

Solutions Collecting From Web of "Расположение базы данных sqlite на устройстве"

Вы можете найти созданную вами базу данных с именем <your-database-name>

в

 //data/data/<Your-Application-Package-Name>/databases/<your-database-name> 

Вытащите его с помощью File Explorer и переименуйте его, чтобы иметь расширение .db3, чтобы использовать его в SQLiteExplorer

Используйте File Explorer DDMS для перехода в каталог эмулятора.

Для этого я сделал

 File f=new File("/data/data/your.app.package/databases/your_db.db3"); FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream(f); fos=new FileOutputStream("/mnt/sdcard/db_dump.db"); while(true) { int i=fis.read(); if(i!=-1) {fos.write(i);} else {break;} } fos.flush(); Toast.makeText(this, "DB dump OK", Toast.LENGTH_LONG).show(); } catch(Exception e) { e.printStackTrace(); Toast.makeText(this, "DB dump ERROR", Toast.LENGTH_LONG).show(); } finally { try { fos.close(); fis.close(); } catch(IOException ioe) {} } в File f=new File("/data/data/your.app.package/databases/your_db.db3"); FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream(f); fos=new FileOutputStream("/mnt/sdcard/db_dump.db"); while(true) { int i=fis.read(); if(i!=-1) {fos.write(i);} else {break;} } fos.flush(); Toast.makeText(this, "DB dump OK", Toast.LENGTH_LONG).show(); } catch(Exception e) { e.printStackTrace(); Toast.makeText(this, "DB dump ERROR", Toast.LENGTH_LONG).show(); } finally { try { fos.close(); fis.close(); } catch(IOException ioe) {} } 

И для этого у вашего приложения должно быть разрешение на доступ к SD-карте, добавьте следующую настройку в ваш manifest.xml

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Не блестящий способ, но работает.

Контекст содержит множество функций пути: Context.getXXXPath ()
Одним из них является android.content.Context.getDatabasePath (String dbname), который возвращает абсолютный путь к базе данных, называемой dbname.

 Context ctx = this; // for Activity, or Service. Otherwise simply get the context. String dbname = "mydb.db"; Path dbpath = ctx.getDatabasePath(dbname); 

Возвращенный путь в этом случае будет примерно таким:

 /data/data/com.me.myapp/databases/mydb.db 

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

Если вы говорите о реальном устройстве /data/data/<application-package-name> это не доступно. У вас должны быть права root …

Это и старый вопрос, но ответ может помочь другим.

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

 public class MySQLiteOpenHelper extends SQLiteOpenHelper { MySQLiteOpenHelper(Context context) { super(context, "/mnt/sdcard/database_name.db", null, 0); } } 

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

 public class MySQLiteOpenHelper extends SQLiteOpenHelper { MySQLiteOpenHelper(Context context) { super(context, "database_name.db", null, 0); } } 

/data/data/packagename/databases/

т.е.

/data/data/com.example.program/databases/

База данных SQLite – это всего лишь файл. Вы можете взять этот файл, переместить его и даже скопировать в другую систему (например, с телефона на рабочую станцию), и он будет работать нормально. Android хранит файл в каталоге /data/data/packagename/databases/ . Вы можете использовать команду adb command или представление File Explorer view в Eclipse ( Window > Show View > Other... > Android > File Explorer ) для просмотра, перемещения или удаления.

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

Запустите adb с помощью cmd и введите следующие команды:

 -run-as com.your.package -shell@android:/data/data/com.your.package $ ls cache databases lib shared_prefs 

Теперь вы можете открыть отсюда.

Если вы назовете свой db как файл без указания пути, то наиболее распространенный способ получить его папку выглядит так:

 final File dbFile = new File(getFilesDir().getParent()+"/databases/"+DBAdapter.DATABASE_NAME); 

Где DBAdapter.DATABASE_NAME – это просто String подобная «mydatabase.db».
Context.getFilesDir() возвращает путь к файлам приложения, например: /data/data/<your.app.packagename>/files/ поэтому вам нужно выполнить .getParent()+"/databases/" , чтобы удалить «файлы» и добавить «Базы данных».
BTW Eclipse предупредит вас о жестко закодированной строке «данные / данные /», но не в этом случае.

Вы можете получить доступ к нему, используя инструкции adb shell

Содержание с указанной выше ссылки:

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

И это важно и на Android.

Вот как это сделать:

1) Запустите эмулятор (или подключите свое реальное устройство к компьютеру). Обычно я запускаю одну из своих программ из Eclipse. 2) Запустите командную строку в каталоге инструментов Android. 3) тип оболочки adb. Это запустит оболочку unix на вашем эмуляторе / подключенном устройстве. 4) перейдите в каталог, в котором находится ваша база данных: cd data / data здесь у вас есть список всех приложений на вашем устройстве. Идите в каталог вашего приложения (будьте осторожны, Unix чувствителен к регистру!) Cd com.alocaly.LetterGame и descend В вашем каталоге баз данных: базы данных cd Здесь вы можете найти все свои базы данных. В моем случае есть только один (сейчас): SCORE_DB 5) Запустите sqlite в базе данных, которую вы хотите проверить / изменить: sqlite3 SCORE_DB Здесь вы можете проверить, какие таблицы присутствуют: .tables 6) введите любую инструкцию SQL, которую вы хотите : Выберите * from Score;

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

 By Default it stores to: String DATABASE_PATH = "/data/data/" + PACKAGE_NAME + "/databases/" + DATABASE_NAME; Where: String DATABASE_NAME = "your_dbname"; String PACKAGE_NAME = "com.example.your_app_name"; 

И проверьте, хранится ли ваша база данных в хранилище устройств. Если «Итак», вы должны использовать разрешение в Manifest.xml:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Вы также можете проверить, есть ли у вашей IDE такая утилита, как перспектива DDMS Eclipse, которая позволяет вам просматривать каталог и / или копировать файлы в эмулятор или из корневого устройства.

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

 private static final String DATABASE_NAME = "/mnt/sdcard/hri_database.db"; 

И вы можете увидеть свою базу данных в:

 storage/sdcard0/yourdatabasename.db 

Если ваше приложение создает базу данных, эта база данных по умолчанию сохраняется в каталоге DATA/data/APP_NAME/databases/FILENAME.

Части вышеуказанного каталога построены на основе следующих правил. DATA – это путь, возвращаемый методом Environment.getDataDirectory (). APP_NAME – ваше имя приложения. FILENAME – это имя, указанное в коде приложения для базы данных.

Открытый класс MySQLiteOpenHelper расширяет SQLiteOpenHelper {MySQLiteOpenHelper (контекст контекста) {супер (контекст, "/mnt/sdcard/database_name.db", null, 0); }}

Не печатать на жестком диске "/ sdcard /"; Используйте Environment.getExternalStorageDirectory (). GetPath () вместо этого