4

phoneGap または phoneGap で動作するプラグインを使用して、sdcard から既存の .db ファイルをロードしたり、sdcard にデータベースを作成したりするにはどうすればよいですか?

データベースのサイズが大きくなる可能性があるため、.db ファイルを SD カードに保存したいと考えています。

4

3 に答える 3

4

私が直面している同じ問題ですが、phonegap-cordova ライブラリを長時間徹底的に読んだ後、パスを選択するための柔軟性を提供するのに欠けていることがわかりました。

理由は、クロスプラットフォームの制限が原因である可能性があります.ライブラリはデフォルトのアプリパスを使用するようにバインドされているため、異なるプラットフォームではライブラリがファイルを簡単に取得できます.

しかし、なんと!! 目標達成にはコツがある……。

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

実際、JavaScript が「openDatabase()」関数を呼び出すと、次のことが行われます

  • '/data/data/< package_name_of_your_app>/'を db_name の前に追加します
  • db_nameの後に「.db」を追加します

つまり、上記の場合、結果は次のようになります。

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

トリックはここにあります。

function onDeviceReady() {
      var db = window.openDatabase("../../../../mnt/sdcard/test", "1.0", "Test DB", 1000000);
}
  • '../../../../mnt/sdcard/' を db_name の前に追加します。ライブラリが '.db' 自体を追加するため、拡張子を追加しないでください。拡張子を追加すると、db ファイルはdb_name.(あなたの拡張子).db

それで!そうなる;

  • '/data/data/< package_name_of_your_app>/'を db_name の前に追加します
  • db_nameの後に「.db」を追加します
  • db_name '../../../../mnt/sdcard/test' が必要です

したがって、結果は次のようになります。

/data/data/<アプリのパッケージ名>/../../../../mnt/sdcard/test.db

そのため、モバイルのルートに戻り、次に/mnt/sdcardに戻ります

于 2013-01-08T11:20:57.660 に答える
0

はい、可能です。変更とともに、接続文字列で DB ファイル パスを指定する必要があります。コード参照のような詳細については、こちらをご覧ください

于 2012-06-22T07:26:03.457 に答える
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+ :+ブートストラップ+インテリジェンス)

これは実際には事前入力に関するものです。このことから何かを得ることができます。事前入力したい人にとっては、これがそれです。

于 2012-06-22T07:26:05.283 に答える