6

我正在编写一个非常简单的数据库应用程序,我希望将其存储在本地(而不是查找远程数据库)。我喜欢用 HTML/Javascript 来设计界面,而且它们是跨平台的(每个人都有浏览器!),所以我真的很想写一个网页作为前端。不应涉及客户端/服务器交互 - 我只希望用户能够使用浏览器而不是本机程序与数据库交互。

但是,我可以看到从浏览器访问数据库的唯一方法是使用 WebSQL 或 IndexedDB 之类的东西。然而,这两者都抽象出管理数据库文件本身的过程,并将其存储在用户设置中的某个地方。我想将数据库文件本身与应用程序一起分发。

简而言之:有没有办法使用 HTML/Javascript 来修改本地 SQLite 数据库文件?还是 HTML 不是我应该用于此类应用程序的工具?

编辑: 可能相关

4

3 回答 3

4

这就是我最终做的事情:

如此处所述,您可以使用 Python 创建本地 Web 服务器。教程提供了服务器处理程序的基本基础结构。我不得不处理一些问题,可能是由 Python 3 或使用 Chrome 访问我的本地页面引起的。

我的 GET 处理函数最终看起来像这样:

def do_GET(self):
    try:
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.send_header('Access-Control-Allow-Origin', '*')
        self.end_headers()
        try:
            fn = GETHANDLERS[self.path[1:]]
            self.wfile.write(fn().encode("utf-8"))
        except KeyError:
            self.wfile.write(self.path.encode("utf-8"))
        return
    except:
        self.send_error(404, 'File Not Found: {0}'.format(self.path))

将 URL 映射到函数的字典在哪里GETHANDLERS- 例如,如果您访问http://localhost/my_funcGETHANDLERS['my_func']则调用该函数。如果该 URL 不存在任何函数,则该 URL 只是回显。

我已经实现了使用该sqlite3模块操作本地 SQLite 数据库的函数。以下是列出表中所有内容的查询示例Categories

import sqlite3

def get_categories():
    con = sqlite3.connect('my.db')
    c = con.cursor()
    c.execute('''SELECT * FROM Categories;''')
    return [cat[0] for cat in c.fetchall()]

GETHANDLERS["categories"] = get_categories

要使用本地应用程序,用户需要安装 Python,然后在打开网页之前运行服务器脚本。我认为这是可以接受的!

于 2012-05-07T22:07:09.113 回答
3

如果你真的只想要一个客户端应用程序,你真的应该考虑使用 HTML5 技术(WebSQL,Indexed DB)。一个很好的阅读在这里:html5医生。您需要将数据库导出到某个地方,或者让用户导出数据库,当用户重新加载页面时,数据库应该重新连接。示例:将 websql 导出到 csv 文件

于 2012-05-06T12:00:45.687 回答
1

您可以使用 sqlite3 连接器并从 HTA 应用程序连接到本地数据库文件。

这是连接器(必须按照页面上的说明注册 dll)

https://www.assembla.com/spaces/litex/documents

检查 zip 文件中的 HTA Demo App(DLL 在 \litex\bin 文件夹中,hta 在脚本文件夹中..)

于 2013-01-18T00:04:10.887 回答