2017-02-27 9 views
0

サーバーからデータベースファイルをダウンロードし、apkで使用します。dataDirectoryのデータベースファイルをCordovaのwwwフォルダにコピーするにはどうすればよいですか?

私は 'cordova.file.dataDirectory'にファイルをダウンロードしました。ファイルは必要な場所に正常にダウンロードされましたが、window.plugins.sqlDB.copy()関数でアプリケーションがクラッシュしてメッセージを表示しました。

残念ながらアプリケーションが停止しました。助けてください

var url = encodeURI("my server path"); 
var store = cordova.file.dataDirectory; 
var fileName = "Sample"; 
window.resolveLocalFileSystemURL(store + fileName, appStart, downloadAsset); 
function downloadAsset() { 
    var fileTransfer = new FileTransfer(); 
    fileTransfer.download(url, store+fileName,function (entry) { 
      if  (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/)) { 
       window.plugins.sqlDB.copy("Sample", 0, copysuccess, copyerror); 
      } 
      function copysuccess() { 
       //open db and run your queries 
       //app.db = window.sqlitePlugin.openDatabase({ name: "Sample" }); 
      } 

      function copyerror(e) { 
       //db already exists or problem in copying the db file. Check the Log. 
       //app.db = window.sqlitePlugin.openDatabase({ name: "Sample" }); 
      } 

      }, 

     function (err) { 
      alert(JSON.stringify(err)); 
     }); 
} 
function appStart() { 
    alert('file available'); 
} 
} 

:のみ 'android_metadata' テーブルを持つデータベースのディレクトリに作成されたファイル

私が使用したコード名前

答えて

1

Cordovaアプリケーションのwwwディレクトリに書き込むことはできません。読み取り専用です。

copy methodcordova-plugin-dbcopyの状態のドキュメント:

この方法は、あなたがコピーwwwディレクトリからデータベースを可能にします。

はすなわち、それはあなたが wwwディレクトリ別のディレクトリに、例えばから既存のDB をコピーすることができますプラットフォーム固有のアプリケーション永続的な格納場所cordova.file.dataDirectory

+0

私はfileTransfer.download()メソッドを使用してこの問題を解決しました。成功関数については、app.db = window.sqlitePlugin.openDatabase({name: "Sample"});でコードを変更しました。代わりに 'window.plugins.sqlDB.copy( "Sample"、0、copysuccess、copyerror);' – Prajakta

+0

返信いただきありがとうございます@DaveAlden – Prajakta

関連する問題