我有一个使用SQLite进行存储的应用程序。我们需要更改它以使其能够与Firefox和其他浏览器一起使用。
LocalStorage似乎是首选。但是,localStorage不提供更复杂的sql功能(例如OrderBy,GroupBy,表连接等)。
有人知道一个Javascript现有的库可以使用localStorage并使其更像SQL吗? - 谢谢你
答案 0 :(得分:6)
您可以使用其中一个javascript linq实现。他们从普通的javascript对象/数组中获取数据,因此应该与localstorage接口很多蛋糕。
http://jslinq.codeplex.com/
http://linqjs.codeplex.com/
甚至是http://www.thomasfrank.se/sqlike.html
他们的在线演示:http://secretgeek.net/JsLinq/(请注意左上角的选项)
我对插入/更新方面不太确定,但您可以确保使用它们进行一些不错的数据查询。
答案 1 :(得分:4)
试试sql.js。这是SQLite从本地C到纯javascript的直接端口。
答案 2 :(得分:2)
如果您正在寻找替代SQLLite的HTML5 / JavaScript关系数据库:SequelSphere
SequelSphere是一个Javascript库,适用于所有现代浏览器和平台,并将其数据存储在IndexedDB和LocalStorage中(取决于浏览器支持的内容)。它可以轻松地与任何第三方RIA框架集成,并提供“更改跟踪器”以帮助进行数据同步。
由于您询问了复杂的SELECT功能,因此可以在SequelSphere的网站上找到以下内容:Top 9 Cool SequelSphere Features
SequelSphere最令人印象深刻的功能必须是它 革命性的SQL解析和执行引擎。它处理所有正常情况 SELECT功能和表达式,然后超越处理LEFT, 正确和外部连接。它不仅拥有无限的处理 嵌套子查询,它在每个主要子句中处理它们(SELECT, FROM,WHERE,JOIN,ON,HAVING,甚至GROUP BY!)。说到分组, 它还处理分组集,汇总,多维数据集和总计分组 功能。它甚至优雅地处理复杂的条件表达式 如:
(a,b)不在((1,2),(3,4),(从标签中选择c,d))
将AT RUNTIME的功能添加到自定义,用户定义的混合中 功能和第三方表(两个很酷的功能在他们自己 右),SQL引擎真的非凡。没有其他SQL引擎 可以做这些事情,更不用说在所有的JavaScript中100%做到这一点 主流浏览器和平台。而且,我们不要忘记它会做到这一切 这速度极快:解析,规划和优化所有 发生在亚毫秒以内。
完全披露:我是SequelSphere的一部分,产品很棒。
答案 3 :(得分:2)
试试alasql.js。这是一个用纯JavaScript编写的SQL数据库。即使它没有与locasStorage一起使用的功能,但您可以轻松地保存和恢复会话或更改之前和之后所需的所有数据。
以下是如何将Alasql与localStorage一起使用的示例:
// Create database and table structure
var db = new alasql.Database();
db.exec('CREATE TABLE students (studentid INT, school STRING)');
// Load table data from localStorage if it exists or create new table
if(localStorage['students']) {
db.tables.students.data = JSON.parse(localStorage['students']);
} else {
db.tables.students.data = [
{studentid: 55, school: 'abc'},
{studentid: 56, school: 'klm'},
{studentid: 57, school: 'nyz'}
];
localStorage['students'] = JSON.stringify(db.tables.students.data);
};
// Add new student and save database
db.tables.students.data.push({student: 100, school:'qwe'});
localStorage['students'] = JSON.stringify(db.tables.students.data);
// SQL-query
console.log(db.exec("SELECT * FROM students WHERE school > 'ght'"));
此示例in Fiddle。
答案 4 :(得分:0)
试试我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home它有IndexedDB,WebSQL和Web存储。提供了丰富的查询选项。令人惊讶的是易于使用。