【问题标题】:Where is physically the database in a WebSQL app?WebSQL 应用程序中的数据库物理位置在哪里?
【发布时间】:2017-05-03 01:16:43
【问题描述】:

我创建了一个简单的应用程序来在数据库中添加一些数据。当我在 Linux Chrome 浏览器上进行测试时,我可以毫无问题地访问数据库本身(路径 .config/google-chrome/Default/databases/http_localhost_8383/),但现在我正在真正的 Android 设备上进行测试,但我找不到 APP 正在生成的文件。

请注意,我在有根设备上使用根浏览器。

【问题讨论】:

    标签: android html sqlite cordova


    【解决方案1】:

    你是对的,数据库应该位于'/data/data/' + this.packageName + '/databases/' + dbName 你确定它正在被创建吗?并且引用 brodybits “当应用程序调用 sqlitePlugin.openDatabase() 时,如果数据库文件不存在,插件将创建数据库文件,如果存在则读取数据库文件。对于每个平台,数据库文件应该在相同的路径(相对于您的应用),无论您是在模拟器还是在真实设备上运行它。”

    在我看来,您使用的是浏览器数据库插件,而不是基于数据库的位置。

    Chrome 将它的数据库保存在 ~/.config/google-chrome/Default/databases 但它与cordova的sqlite插件cordova-sqlite-storage不同。

    【讨论】:

    • 是的,数据库已经创建:我添加了一些数据,重新启动,数据就在那里......我与你在回答中所说的唯一不同的是我没有t 调用 sqlitePlugin.openDatabase() 但 window.openDatabase(),有什么区别吗?
    • 当然可以。那是浏览器的数据库而不是cordova。
    • WebSQL 已被弃用,顺便说一句。
    • Ooopppsss... 我已编辑问题以反映这是一个 WebSQL 应用程序。在这种情况下,是否可以访问该文件?
    • 尝试 Android 设备监视器 -> 文件资源管理器 -> 数据 -> 数据 -> yourpackagename ->app_webview -> 我认为应该在这里
    【解决方案2】:

    也许这会有所帮助:

        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/";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      相关资源
      最近更新 更多