Javascript 含铬闪锌矿

Javascript 含铬闪锌矿,javascript,sqlite,google-chrome-extension,Javascript,Sqlite,Google Chrome Extension,是否有可能使与sqlite数据库交互的chrome扩展与firefox扩展类似?你能给我一些建议或链接吗?关于开发与sqlite交互的chrome扩展,哪里有更多信息 谢谢您Chrome支持(由sqlite提供支持),但看起来W3C停止了它的运行。您可以在浏览器中使用它,这是一个普通的sqlite数据库,您可以像其他任何sqlite数据库一样打开/修改它,例如使用 Chrome根据域名或扩展id自动定位数据库。几个月前,我在我的博客上发表了一篇关于的短文,因为当您测试某些功能时,它非常有用。您可

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

谢谢您

Chrome支持(由sqlite提供支持),但看起来W3C停止了它的运行。

您可以在浏览器中使用它,这是一个普通的sqlite数据库,您可以像其他任何sqlite数据库一样打开/修改它,例如使用


Chrome根据域名或扩展id自动定位数据库。几个月前,我在我的博客上发表了一篇关于的短文,因为当您测试某些功能时,它非常有用。

您可能能够利用它

js是SQLite到JavaScript的一个端口,它使用Emscripten编译SQLite C代码。这里没有C绑定或节点gyp编译


//创建数据库
var db=new SQL.Database();
//在不读取结果的情况下运行查询
run(“创建表测试(col1,col2);”;
//插入两行:(1111)和(2222)
db.run(“插入测试值(?),(?,?)”,[1111,2222]);
//准备一份声明
var stmt=db.prepare(“从测试中选择*,其中col1介于$start和$end之间”);
stmt.getAsObject({$start:1,$end:1});//{col1:1,col2:111}
//绑定新值
stmt.bind({$start:1,$end:2});
而(stmt.step()){//
var row=stmt.getAsObject();
//[…]对结果行执行某些操作
}

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

我不太确定您的意思是“我可以在chrome中使用sqlite(websql)吗”还是“我可以在firefox中使用sqlite(websql)”,因此我将回答这两个问题:

  • 您不能在Firefox中使用WebSQL。(sql.js是一个选项,但实际上,1.5MB的js用于数据库?)
  • 您完全可以在chrome扩展中使用WebSQL
请注意,WebSQL不是进入.sqlite数据库的完全访问管道。这是WebSQL。您将无法运行某些特定查询,如
VACUUM

不过,创建/读取/更新/删除还是很棒的。 我制作了一个小库,它可以帮助处理所有烦人的问题,比如创建表和查询,并提供了一个带有关系和所有内容的ORM/ActiveRecord模式,还有一大堆示例,应该可以让您立即开始使用

另外,要知道,如果你想构建一个FireFox扩展:确保你想投入两次时间


虽然WebSQL规范已经被弃用多年,但即使到了2017年,在可预见的时间内,它看起来也不会从Chrome中删除

我可以从chrome连接到我的sqlite数据库并进行一些选择、插入、更新和删除语句吗?@xralf如果你是指外部sqlite安装,那么没有。chrome附带内置sqlite,你可以使用它(创建数据库、执行选择等)。我想使用firefox和chrome中相同的sqlite数据库。使用Web SQL API可能吗?绝对不可能使用Web SQL API。可能使用NPAPI(),但这将非常困难。为什么需要共享同一个数据库?也许你可以使用一些外部数据库(如谷歌应用程序引擎),你的扩展(用于Chrome和Firefox)可以与之通信。。。只是一个想法:)。是否可以在数据库之间设置文件系统级链接?这将是一个有趣的尝试。应该注意的是,这是迄今为止唯一一个可能连接到现有DBs的产品
<script src='js/sql.js'></script>
<script>
    //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
    }
</script>