2016-12-17 6 views
0

データベースにデータを追加するための簡単なAPPを作成しました。私はLinuxのChromeブラウザでテストしていましたが、データベース自体(パス.config/google-chrome/Default/databases/http_localhost_8383/)へのアクセスに問題はありませんでしたが、実際のAndroid搭載デバイスでテストしていますが、APPが生成しているファイルが見つかりません。WebSQLアプリケーションのデータベースは物理的にどこにありますか?

私はrootedデバイスでrootブラウザを使用しています。

答えて

1

正しいです、dbは '/ data/data /' + this.packageName + '/ databases /' + dbNameにあります。作成されていますか?そして、brodybitsを引用する "アプリケーションがsqlitePlugin.openDatabase()を呼び出すと、プラグインは存在しない場合はデータベースファイルを作成し、存在する場合はデータベースファイルを読み込みます。各プラットフォームのデータベースファイルは同じでなければなりませんエミュレータ上で実行されているのか、実際のデバイス上で実行されているのかにかかわらず、(あなたのアプリケーションからの)相対パスです。

データベースの場所に基づいている代わりに、ブラウザのデータベースプラグインを使用しているように思えます。

Chromeは〜/ .config/google-chrome/Default/databasesにデータベースを保存しますが、コードバのsqliteプラグインcordova-sqlite-storageと同じではありません。

+0

はい、データベースが作成されました:私はいくつかのデータを追加する必要があり、再起動するとデータがあります...のみ私があなたの答えで言うこととは異なることは、sqlitePlugin.openDatabase()ではなくwindow.openDatabase()を呼び出すことです。何か違いはありますか? – Ivan

+1

もちろんです。それはコードバウではないブラウザのデータベースです。 – TigOldBitties

+1

WebSQLは推奨されていません。 – TigOldBitties

0

多分これが役立つことができます:

if (android.os.Build.VERSION.SDK_INT >= 17) { 
     DB_PATH = xcontext.getApplicationInfo().dataDir + "/databases/"; 
    } else { 
     DB_PATH = xcontext.getFilesDir().getPath() + "data/" + 
       xcontext.getPackageName() + "/databases/"; 
    } 

か:

if (android.os.Build.VERSION.SDK_INT >= 17) { 
     DB_PATH = xcontext.getApplicationInfo().dataDir + "/databases/"; 
    } else { 
     DB_PATH = "/data/data/" + xcontext.getPackageName() + "/databases/"; 
    } 
関連する問題