2016-12-17 52 views
0

我創建了一個簡單的APP來添加數據庫中的一些數據。當我在Linux Chrome瀏覽器上測試時,我沒有問題訪問數據庫本身(路徑.config/google-chrome/Default/databases/http_localhost_8383/),但現在我正在測試一個真實的Android設備,並且找不到APP正在生成的文件。WebSQL應用程序的物理數據庫在哪裏?

請注意,我在根設備上使用根瀏覽器。

回答

1

你是對的,數據庫應該位於'/ data/data /'+ this.packageName +'/ databases /'+ dbName你確定它正在被創建嗎?並引用brodybits「當應用程序調用sqlitePlugin.openDatabase()時,插件將創建數據庫文件(如果它不存在),或者讀取數據庫文件(如果它存在)。對於每個平臺,數據庫文件應該在相同路徑(相對於您的應用),無論您是在模擬器上還是在真實設備上運行它。「

這聽起來像是我在使用瀏覽器數據庫插件,而不是基於數據庫的位置。

Chrome將其數據庫保存在〜/ .config/google-chrome/Default/databases中,但與cordova的sqlite插件cordova-sqlite-storage不同。

+0

是,該數據庫已經建立:我補充一些數據,重新啓動該數據是有...唯一我在你的回答中所說的與我所說的不同的是,我沒有調用sqlitePlugin.openDatabase(),而是調用window.openDatabase(),它有什麼區別嗎? – Ivan

+1

當然是的。這是瀏覽器的數據庫不cordova。 – 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/"; 
    } 
相關問題