Javascript的预加载本地数据库后端(可能吗?)

时间:2010-07-11 04:51:33

标签: javascript sqlite local-storage

我最近看过有关HTML5和本地Db创建和使用的文章。我还看到了现有Access Db后端的Javascript连接字符串的一些示例。我有兴趣找到一种方法来构建Db,使用记录预加载它,并使用Web应用程序连接和读取Db。例如,我在Windows中使用Tcl创建了许多独立应用程序,用于读取Sqlite Db文件。本质上,应用程序(.exe文件)和Db文件在文件夹和函数中彼此相邻,与任何其他Db应用程序一样,除非不使用服务器。

我希望能够做到这一点,但使用网络应用程序(.html)和Db文件。有谁知道这是否可能?作为一个例子,我想构建一个在任何浏览器中运行的语言应用程序,并在后端保存预加载的单词。因此会有两个文件,即Web应用程序和db文件。

任何建议或资源链接都会非常感激。我能想到的唯一接近的是通过Javascript连接到Access,但是我需要一个像Sqlite这样的多平台的Db。

谢谢,

DFM

2 个答案:

答案 0 :(得分:3)

你的网络应用程序,它的本地数据库和“启动”数据都必须从某个地方开始,所以我认为这一切都会在与Web服务器的实时连接中滚动。当第一次出现时,你:

  1. 发送页面及相关代码。
  2. 在您的JavaScript中,测试数据库是否存在。
    1. 存在?不需要启动。什么都不做,或同步等。
    2. 不存在?构建它并提供初始数据。如果这很慢,您可以给用户一个友好的警告:“设置,请待命。”根据您推送所有数据的方式,您甚至可能会显示一个进度条:“初始化数据库:10%”......
  3. 没有第3步。
  4. 设置完成后,此应用程序可以完全是本地的 - 无需网络连接 - 只要您在不假设非本地资源的情况下对其进行编码。

    参考文献:

答案 1 :(得分:3)

您可以通过javascript访问已创建的sqlite db文件。查看此链接http://code.google.com/apis/gears/api_database.html

的“数据库文件的位置”区域

我知道这适用于Google Gears,但Gears使用SQLite,该位置仍适用于没有Gears且仅使用sqlite db文件。

例如,我使用firefox附加组件“SQLite Manager”在本地计算机上创建sqlite db文件。然后我将该文件复制到C:\ Users \\ AppData \ Local \ Google \ Chrome \ User Data \ Default \ databases \ _ file__0

我可以在Google Chrome中使用JavaScript访问该文件:

    var db = null;

    try {
        if (window.openDatabase) {
            db = openDatabase("mydbfile.sqlite", "1.0", "HTML5 Database API example", 200000);
    ....

您必须小心Chrome中的文件名,因为它会自动按ID号命名每个sqlite数据库。例如,我不得不将我的sqlite db文件名重命名为14,以便在浏览器中从JavaScript中读取它。一旦我这样做,它就像一个冠军,我能够访问所有表格,数据等。