Вопрос по java, cordova, android – Можно ли загрузить / создать базу данных в SDCard с помощью phoneGap в Android?

4

Как я могу загрузить существующий файл .db из sdcard или создать базу данных в sdcard, используя phoneGap или любой плагин, который будет работать с phoneGap?

Я хочу сохранить мой файл .db в SDCard, потому что размер базы данных может увеличиться.

Нет, я не мог найти решение mobilemagic
Точная проблема, с которой я сталкиваюсь. Вы нашли какое-нибудь решение? Samik R
Добавлена проблема в PhoneGap JIRA:issues.apache.org/jira/browse/CB-1191 Samik R
Благодарю. Кроме того, проигнорируйте мой ответ о persistanceJS: persistanceJS не работает для баз данных sqlite на SD-карте, он работает для баз данных webSQL. Проголосовал за удаление ответа. Samik R

Ваш Ответ

3   ответа
0

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

какую базу данных вы используете?
я использую файл .db, использую api phoneGap, когда мы вызываем метод openDatabase (), как указано выше в комментарии. он создает два файла, т.е. 0000000000000001.db и Databases.db, поэтому я создал эти два файла вручную, заполнив их данными, и теперь я хочу сохранить этот файл на SDCard и получить к нему доступ с помощью метода openDatabase. mobilemagic
Хорошо, я не специализируюсь на Android, поэтому в лучшем случае я могу предложить установить настройки БД на карту или отредактировать путь, по которому создаются ваши файлы 0000000000000001.db и Databases.db.
спасибо за твой ответ. приведенная выше ссылка содержит код для импорта и экспорта файла db из sdcard во внутреннюю память и наоборот, но я хочу использовать только существующую базу данных, хранящуюся на sdcard, с использованием phoneGap api. и моя проблема в том, что этот метод задан как window.openDatabase (database_name, database_version, database_displayname, database_size); принимать только имя базы данных, а не путь, из которого можно загрузить базу данных. mobilemagic
4

С той же проблемой я сталкиваюсь, но после долгого тщательного изучения библиотеки phonegap-cordova я обнаружил, что ее не хватает для обеспечения гибкости при выборе пути.

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

но что!! есть хитрость для достижения цели ....

function onDeviceReady() {
    var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
}

на самом деле, когда JavaScript вызывает & apos; openDatabase () & apos; функция, делать следующие вещи

  • add '/data/data/< package_name_of_your_app>/' before db_name
  • and add '.db' after db_name

то есть: в вышеупомянутом случае результат будет;

/data/data/< package_name_of_your_app>/test.db

так что хитрость идет сюда;

function onDeviceReady() {
      var db = window.openDatabase("../../../../mnt/sdcard/test", "1.0", "Test DB", 1000000);
}
  • add '../../../../mnt/sdcard/' before db_name, don't add extension since library add '.db' itself, if you add any extension then your db file will be db_name.(yourextension).db

что теперь! будет;

  • add '/data/data/< package_name_of_your_app>/' before db_name
  • and add '.db' after db_name
  • it will take your db_name '../../../../mnt/sdcard/test'

следовательно, результат будет;

/data/data/< package_name_of_your_app>/../../../../mnt/sdcard/test.db

Итак, он вернется к корню вашего мобильного телефона, а затем/mnt/sdcard

@chhameed, так как ваш файл базы данных создан успешно,'db' переменная указывает на ваш db-файл, к которому у вас уже есть доступ, вы должны просмотреть свой код. Получить помощь отhere
& APOS; ../../../../& APOS; используйте 4 раза, не забудьте использовать «mnt / sdcard», я пробовал и работает отлично ....
Я очень новичок в PhoneGap и ищу создание базы данных на SDCard. когда я попробовал описанный выше трюк, я сталкиваюсь с ошибкой "результат выражения" db "; [ноль] не является объектом. Вы можете сказать, в чем проблема? Спасибо:)
О, спасибо @ smkrn110 Я успешно сохранил файл в моей SDCard. но когда я собираюсь получить его, он ничего не отображает? есть ли другой способ получить к нему доступ
Этого также можно добиться, создав собственный плагин & lt; название плагина = & quot; хранилище & quot; значение = & Quot; org.apache.cordova.Storage & Quot; / & GT;
0

Да . Вы можете, Я просто предоставлю ссылку, http://gauravstomar.blogspot.se/2011/08/prepopulate-sqlite-in-phonegap.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+GauravSTomarBootstrappingIntelligence+(Gaurav+S+Tomar+:+Bootstrapping+Intelligence)

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

спасибо за ваш ответ, но указанная вами ссылка, я уже использовал ее, в этой ссылке файл базы данных вставляется в папку базы данных phoneGap, расположенную по умолчанию, т.е. файлы на SDCard и загрузите оттуда. mobilemagic

Похожие вопросы