当前位置:  开发笔记 > 编程语言 > 正文

JavaScript sqlite

如何解决《JavaScriptsqlite》经验,为你挑选了5个好方法。

从JavaScript访问和操作sqlite数据库的最佳建议.



1> Juicy Script..:

有一个项目称为sql.jsJavaScript中的SQLite端口.

sql.js是SQLite到JavaScript的一个端口,通过使用Emscripten编译SQLite C代码.



2> lovasoa..:
javascript SQLite解决方案的全景

在浏览器中

如果要从Web浏览器中访问SQLite数据库,则没有多少解决方案.

sql.js

SQLite C库已使用emscripten 移植到javascript.该港口是由Alon Zakai(也是emscripten的作者)的名字开始的.我是这个库的当前维护者.sql.js

API如下:



Web SQL

W3C已经开始研究用于在浏览器中执行SQL的本机API,称为web sql.使用该API的一个示例:

var db = openDatabase('mydb', '1.0', 'my first database', 2 * 1024 * 1024);
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
  tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
});

但是,该项目已被放弃.因此,它没有得到广泛支持.请参阅:http://caniuse.com/sql-storage

在节点中

如果你编写客户端javascript,在节点中,你有更多的选择.请参阅:https://www.npmjs.org/search?q = sqlite.

节点的sqlite3

如果你有一个编译工具链,并且可以不关心必须为不同平台编译你的应用程序(或只针对一个平台),我会建议你使用node-sqlite3.它速度快(比快得多sql.js),有完整的API和良好的文档.API的一个示例如下:

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');

db.serialize(function() {
  db.run("CREATE TABLE lorem (info TEXT)");

  var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
  for (var i = 0; i < 10; i++) {
      stmt.run("Ipsum " + i);
  }
  stmt.finalize();

  db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
      console.log(row.id + ": " + row.info);
  });
});

db.close();

sql.js

是的,再一次.sql.js可以从节点使用.如果你想要一个纯粹的JavaScript应用程序,这是解决方案.但是,它会比以前的解决方案慢.

以下是如何sql.js从节点使用的示例:

var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('test.sqlite');

db.run("INSERT INTO test VALUES (?,?,?)", [1, 'hello', true]);  -- corrected INT to INTO


var data = db.export();
var buffer = new Buffer(data);
fs.writeFileSync("filename.sqlite", buffer);



3> Mike Stone..:

好吧,如果您正在使用客户端JavaScript,我认为您将失去运气......浏览器倾向于沙盒化JavaScript环境,因此您无法以访问数据库等任何通用容量访问该计算机.

如果您正在讨论从客户端访问的服务器端的SQLite数据库,您可以设置一个AJAX解决方案,调用某些服务器端代码来访问它.

如果您正在讨论Rhino或其他服务器端JavaScript,您应该查看宿主语言对SQLite的API访问(例如Rhino的JDBC).

或许澄清一下你的问题......?


"或许可以澄清一下你的问题......?" 你是完全正确的 - 但随后你的回答澄清了我的无知和完全理解的广泛性.谢谢.

4> Cebjyre..:

Google Gears有一个内置的sqlite数据库 - 但如果你打算依赖它,你需要确保人们安装它.

根据您的具体情况,您可以强制执行安装,否则您应该将其视为一个很好的,但要优雅地降级,以便在未安装的情况下网站仍然有效.



5> 小智..:

如果您希望在浏览器(即客户端)上访问SQLite数据库,则需要使用浏览器来支持它.您可以使用SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/来做到这一点,它假设浏览器是基于Mozilla的(即支持SQLite).您仍然需要允许访问底层库(http://www.mozilla.org/projects/security/components/signed-scripts.html)

如果您正在寻找从Javascript程序到SQLite数据库的服务器端访问,有几种选择:JSDB是一个http://www.jsdb.org/ ; JSEXT另一个http://jsext.sourceforge.net/ ; 和jslibs另一个http://code.google.com/p/jslibs/

- MV


这么多有用的答案.谢谢.在这里发帖后,我找到了http://developer.mozilla.org/en/Storage.感谢您帮助我理解真正理解的范围.
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有