#java #android #sqlite #android-manifest
#java #Android #sqlite #android-манифест
Вопрос:
Привет, у меня возникли некоторые проблемы при создании базы данных sqlite в Android.
В эмуляторе все в порядке, я могу создать базу данных. Но это не работает на самом компьютере. Когда я попытался отладить приложение на своем телефоне, ему просто не удалось создать базу данных.
Итак, кто-нибудь может рассказать мне, что произошло? Есть ли какое-либо специальное разрешение, которое мне нужно добавить в файл манифеста? Я пробовал ACCESS_CHECKIN_PROPERTIES или WRITE_EXTERNAL_STORAGE, но все еще не могу получить базу данных.
Кстати, пользовательская база данных может храниться только на SD-карте, но в корневом каталоге?
Большое вам спасибо!!
Комментарии:
1. Прочитайте logcat. Это подскажет вам, в чем проблема.
2. Этот пример приложения демонстрирует работу с базой данных, и оно работает на эмуляторах и устройствах: github.com/commonsguy/cw-android/tree/master/Database/Constants
3. Большое вам всем спасибо. Я уже решил это. Проблема в том, что эмулятору не требуется расширение «.db», в то время как фактический телефон требует этого.
Ответ №1:
Без какой-либо обратной связи по ошибке невозможно сообщить вам, что не так в вашем коде. Тем не менее, я могу сказать вам, что вам это не нужно ACCESS_CHECKIN_PROPERTIES
для использования вашей собственной базы данных. Вам также не понадобится WRITE_EXTERNAL_STORAGE
, если вы не пытаетесь получить доступ к sdcard.
Базы данных по умолчанию хранятся во вложенной папке вашего приложения во внутреннем хранилище, т.е.:
/data/data/YOUR_APP/databases/YOUR_DATABASAE.db
Однако, если вы делаете это на физическом устройстве, оно должно быть внедрено.
Комментарии:
1. @Aleadam Спасибо тебе, Алеадам. Ни то, ни другое разрешение здесь не работает. Проблема в том, что без этих разрешений на эмуляторе я могу создать базу данных и получить запись с помощью курсора. Я просто не могу сделать это на своем телефоне. Так не могли бы вы, пожалуйста, сказать мне, почему?
2. @Kitten нет, я не могу. По той же причине, что и вчера: вам нужно прочитать logcat . Смотрите developer.android.com/guide/developing/tools/logcat.html или проверьте перспективу отладки в Eclipse.
3. @Aleadam Все равно спасибо вам! Хорошего дня!!
4. @Kitten Я не имел в виду, что мы не можем помочь, я имел в виду просто, что нам нужно больше информации! Logcat — это очень мощный инструмент, и вам следует немного научиться им пользоваться, если вы хотите разрабатывать приложения для Android. Пожалуйста, найдите время, чтобы прочитать об этом, а затем используйте его в своем приложении. Затем вы можете опубликовать другой вопрос с помощью трассировки стека logcat, и этого, вместе с кратким описанием проблемы и коротким фрагментом кода, скорее всего, будет достаточно, чтобы найти проблему. Удачи!
5. @Aleadam Спасибо! Журнал показывает, что он не может выполнить запрос, потому что в базе данных нет определенной таблицы. выделено жирным шрифтом, однако это происходит только на реальном мобильном устройстве, а не на эмуляторе. В эмуляторе код работает нормально. ** выделено жирным шрифтом ** Поэтому мне интересно, есть ли какое-либо разрешение, которое запрещает приложению получать доступ к внутреннему хранилищу.
Ответ №2:
У меня была точно такая же проблема. Мое приложение создало бы базу данных на эмуляторе, считывало и записывало данные, но при запуске устройства произошел сбой.
Я нашел очень простое решение для этого: удалите базу данных на вашем устройстве вручную по адресу /data/data/YOUR_APP/databases /YOUR_DATABASAE.db, а затем повторно запустите ваше приложение.
В моем случае сработало, надеюсь, это поможет.
Ответ №3:
Это очень легко решить, вы, должно быть, не добавили расширение .db в имя вашей базы данных, объявленное в файле db java, например, public static final String DB_NAME = "tasks.db";
НЕ ЗАБЫВАЙТЕ О РАСШИРЕНИИ .db
Комментарии:
1. Это не имеет значения. Имя базы данных может быть практически любым.
Ответ №4:
Возможно, у вас возникла эта проблема из-за того, что на вашем телефоне установлена предыдущая версия вашего приложения. Перед установкой новой версии попробуйте удалить предыдущую с помощью «Application Manager». Я решаю таким образом.
Ответ №5:
сначала я проверяю разрешения, и среда выполнения получает разрешение, но поскольку targetSdkVersion равнялась 25, проблема была нерешенной, работа с db без использования РАСШИРЕНИЯ .db всегда была хорошей и работала, но, похоже, targetSdkVersion из 25 нуждается в РАСШИРЕНИИ .db, и моя проблема решена.
Ответ №6:
Я очистил данные приложения из приложений в настройках, затем удалил и запустил приложение, переименовав файл db с расширением .db, у меня это работает