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

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

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

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

Вы можете найти созданную вами базу данных с именем <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 () вместо этого

Intereting Posts
Как добавить новый Android-календарь в Android? Установка пользовательского привязки при перетаскивании представления Просто обновил мою ОС X до Yosemite, Android Device Chooser, не показывающий устройство – что делать? Как сделать Android-приложение без использования Android Studio? Компиляция приложения для Android с использованием boost, неопределенная ссылка на 'mbtowc' VideoView превращается в черный экран INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES для установки adb Программный доступ к внутреннему хранилищу (не SD-карта) на Verizon HTC Droid Incredible (Android) Как получить версию ядра Linux с помощью Android? Как включить статическую библиотеку в другой проект ndk? Android – Удалить Spinner Dropdown Arrow Разработка Android. Для ссылки на поле необходимо ли это использовать? Phonegap / HTML5 и проблема изменения размера экрана Android при повороте с пейзажа на портрет Могу ли я получить исходные данные запроса (намерения) в обратном вызове onActivityResult? Отключение активности в android