关于javascript:Chrome中的SQLite

Sqlite in chrome

是否有可能使与sqlite数据库交互的chrome扩展类似于firefox扩展?您能否给我一些建议或链接,有关开发与sqlite交互的chrome扩展的更多信息?

谢谢


您可以使用Web SQL API,它是浏览器中的普通SQLite数据库,并且您可以像使用Lita一样打开/修改它,就像其他任何SQLite数据库一样。

Chrome会根据域名或扩展名自动定位数据库。几个月前,我在博客上发布了有关如何删除Chrome数据库的简短文章,因为在测试某些功能时,它非常有用。


您也许可以使用sql.js。

sql.js is a port of SQLite to JavaScript, by compiling the SQLite C code with Emscripten. no C bindings or node-gyp compilation here.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script src='js/sql.js'>

    //Create the database
    var db = new SQL.Database();
    // Run a query without reading the results
    db.run("CREATE TABLE test (col1, col2);");
    // Insert two rows: (1,111) and (2,222)
    db.run("INSERT INTO test VALUES (?,?), (?,?)", [1,111,2,222]);

    // Prepare a statement
    var stmt = db.prepare("SELECT * FROM test WHERE col1 BETWEEN $start AND $end");
    stmt.getAsObject({$start:1, $end:1}); // {col1:1, col2:111}

    // Bind new values
    stmt.bind({$start:1, $end:2});
    while(stmt.step()) { //
        var row = stmt.getAsObject();
        // [...] do something with the row of result
    }

sql.js是单个JavaScript文件,当前大小约为1.5MiB。尽管这可能是网页中的问题,但扩展名的大小可能是可接受的。


Chrome支持WebDatabase API(由sqlite支持),但看起来W3C停止了其开发。


我不太确定你是说"我可以在chrome中使用sqlite(websql)"还是"我可以在firefox中使用sqlite(websql)",所以我将同时回答:

  • 您不能在Firefox中使用WebSQL。 (sql.js是一个选项,但实际上,数据库需要1.5 mb的js吗?)
  • 您绝对可以在chrome扩展程序中使用WebSQL。例如,请参阅webkit window.openDatabase文档以获取介绍。

请注意,WebSQL不是到.sqlite数据库的完全访问管道。是WebSQL。您将无法运行某些特定的查询,例如VACUUM

对于创建/读取/更新/删除来说真是太棒了。
我制作了一个小库来帮助处理所有烦人的细节,例如创建表和查询,并提供了一个带有关系的ORM / ActiveRecord模式以及所有的大量示例,您可以立即开始学习,可以查看在这里

此外,请注意,如果您要构建FireFox扩展名:它们的扩展名格式即将更改。确保您要花费两次时间。

尽管WebSQL规范已被弃用多年,但即使到了2017年,它仍然看起来在可预见的时间内不会从Chrome中删除。他们正在跟踪使用情况统计信息,在现实世界中仍然有大量的chrome扩展程序和网站正在实施该规范。