【问题标题】:Open prepopulated SQLite database in Cordova在 Cordova 中打开预填充的 SQLite 数据库
【发布时间】:2014-12-26 13:06:23
【问题描述】:

我正在开发一个跨平台(Android、IOS、WP)应用程序,该应用程序需要有一个相对较大的预填充数据库。我正在使用带有 Cordova 插件的 Visual Studio 2013。 互联网上的大多数答案都指向herehere。但是,这些链接始终以“将预填充的数据库复制到资产文件夹”开头。 在我的 Visual Studio 项目中,没有资产文件夹。这就是我所拥有的:

我应该怎么做?最好该解决方案应适用于所有平台。谢谢。

【问题讨论】:

标签: visual-studio cordova assets visual-studio-cordova


【解决方案1】:

无需在您的应用首次运行时复制或插入值。

改为使用带有 createFromLocation 参数的 openDatabase,如下所述:

http://redwanhilali.com/ionic-sqlite/

【讨论】:

  • 在我后来的项目中发现这是最好的解决方案。在我问这个问题的时候,我认为这是不可能的。不太确定如何处理接受的答案和这个。
【解决方案2】:

SQLite 会强制您创建完整的数据库,在应用程序内的函数中执行“创建表”命令,对吗?

该函数仅在数据库不存在时执行。如果已经存在 = 不要执行那个函数!

所以...在“CREATE TABLE”命令中,添加“INSERT INTO”命令以及您需要填充的内容!这只会执行第一次。

如果您想要更简洁的代码,您可以将所有数据放在一个数组中,然后使用 For 循环执行插入操作。

(我在许多应用程序中都这样做了,并且工作起来很迷人!)

添加:

为了解决“代码简洁”,我建议 2 个选项:

选项 1 - XML 文件:添加一个带有信息的外部 XML 文件,然后在“create db”函数中读取它,然后在读取 XML 文件的 For 循环中执行“插入”。

选项 2 - 创建一个特殊的 js 文件(例如,将其命名为“populateDB.js”!)并在那里输入所有代码...您将不会再看到代码!

我希望它有所帮助,因为您不能在项目中包含数据库,您必须在设备上创建它...

【讨论】:

  • 我知道您的解决方案,但出于代码简洁性、可读性和应用程序启动时间的考虑,希望避免使用它。如果我没有得到更好的答案,我会接受你的答案。
  • 看看我添加了什么来解决你的“代码简洁”解决方案......我认为我的知识没有更好的答案
【解决方案3】:

我喜欢你的问题。这让我想到了一个即将到来的项目以及我将如何解决类似的问题。

您分享的链接:http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html 是一个很好的起点。引用的“资产”目录不可见,因为通过 Visual Studio,您正在查看代码的 Windows 平台版本。请注意,在您引用的链接中的 Xcode/iOS 屏幕截图中,数据库文件不在资产文件夹中,而是在大致等同于 Android 项目中资产的“资源”中。

您将需要 Mac 和 Xcode 来为 iOS 构建您的项目,这无法通过 Visual Studio 或在 Windows 机器上完成。当 cordova 使用“cordova platform create ios”命令创建项目时,您将看到一个资源目录,您可以按照说明继续操作。

同样,使用 Android,您可以在 Eclipse 或其他编辑器/文件浏览器中打开 Android 项目并执行相同操作。我自己,我对 Visual Studio 不够勇敢(缺乏经验),无法在 Visual Studio 解决方案中浏览其他平台。

添加注意:在http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html,请务必阅读最近关于将文件复制到应用程序中的讨论/cmets。似乎仍然可以正常工作,但随着 Cordova 的较新版本,该过程略有变化。

【讨论】:

    【解决方案4】:

    使用 Visual Studio(和 Phonegap)时,您看不到 assets 文件夹。如果你想在 Visual Studio 中开发预填充的数据库,你最好应用 sqlite 插件。
    您需要两个插件。

    1) Cordova-sqlite-evcore-extbuild-free
    2) cordova-plugin-dbcopy ->这个插件会将你的数据库复制到资产文件夹。

    我认为下面的 Git 会对你有所帮助。
    https://github.com/ymochi/prepopulated-DB-for-hybrid-applications

    【讨论】:

      猜你喜欢
      • 2016-10-24
      • 1970-01-01
      • 2015-11-24
      • 2016-10-26
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      相关资源
      最近更新 更多