2009-12-23 3 views
25

До сих пор мы разработали приложения в android, которые создают базу данных во время выполнения. Нам нравится знать, как мы можем получить доступ к предварительно созданному или существующему файлу базы данных/sqlite в нашем приложении для Android? Просьба представить подробную информациюКак получить доступ к существующей базе данных sqlite в Android?

+0

@Yaqub Ahmad Спасибо за редактирование, чтобы сделать его более понятным. –

+0

Вы захотите попробовать [вспомогательный помощник sqlite для Android] (https://github.com/jgilfelt/android-sqlite-asset-helper). Это делает кусок пирога. – craned

ответ

32

Взгляните на документацию для android.database.sqlite.SQLiteDatabase.

В частности, имеется команда openDatabase(), которая будет обращаться к базе данных с учетом пути к файлу.

SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, 0); 

Просто укажите путь к базе данных в качестве переменной path, и он должен работать.

+1

Предположим, у меня есть мой файл db в папке с моими активами, а затем какой путь я передам переменной пути? –

+5

См. Другой вопрос, связанный с этим: http://stackoverflow.com/questions/513084/how-to-ship-an-android-application-with-a-database Одним словом, вы не можете этого сделать непосредственно. Вам нужно скопировать данные из вашего APK и в новый файл в/data, затем вы можете открыть его напрямую. Эта запись блога имеет более подробную информацию: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ –

0

Сначала скопируйте SDCARD и укажите его путь в переменной «DBNAME» в следующем примере. это будет что-то вроде «/sdcard/persons.db», если вы напрямую потянете его на SDCard.

+0

Не могли бы вы расширить? Мне не совсем понятно, как это решает проблему. Ссылка в первой версии вашего ответа также сломана - можете ли вы ее исправить? – JonasCz

3

я следовал той же дороге и нашел две проблемы:

  1. включает поле _id на любой таблице вы создаете и убедитесь, что это часть столбцов, чтобы вернуться, когда вы запрашиваете любую таблицу.
  2. Возможно, у вас возникла такая ошибка, как Не удалось открыть базу данных. закрытие it.. Это происходит потому, что мы копируем базу данных из существующего файла вместо создания таблиц поверх db, созданных андроидом sqlite , и таблица android_metadata может не существовать. Для создающего это просто выполнить следующий запрос на вашем дб:

    CREATE TABLE android_metadata (locale TEXT);

    И добавьте соответствующую языковую среду, например en_US

+0

Могу ли я запустить этот sql в существующей базе данных SQLite или я должен запустить его в базе данных, созданной путем копирования данных из существующей базы данных в/assets /? – marienke

+0

Он должен быть запущен в существующей базе данных в папке «активы» или после копирования в базе данных приложения, но, я думаю, проще иметь таблицу в базе данных до копирования – gantzer89

0

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

Context context = getApplicationContext(); 
context.getDatabasePath(DataBaseHelper.database_Name); 
Смежные вопросы