indexedDB的查询问题

凌云紫冥 2013-09-27 02:26:17
indexedDB怎么查询有两个字段限制的语句啊?
比如说。我想找到用户表中名字是“小明” 考试成绩是“80”的记录,怎么写?
实际程序成绩很多很复杂,不能简单的循环遍历去比较。 不知道有没有这种数据库查询的方法能做到?

还有关于用indexedDB查询分页的,我怎么感觉indexedDB并不提供这些? 它的初衷是设计的很简单,所以不提供这类关系型的功能吗?

用户表:
姓名 成绩
小明 90
小明 80
小红 90
小红 80
...全文
470 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
peachesTao 2015-10-29
  • 打赏
  • 举报
回复
创建索引: objectStore.createIndex('sendAndReceiveIdIndex',['sendId','receiveId'],{unique:false}); 查询: store.index('sendAndReceiveIdIndex').openCursor(IDBKeyRange.only([‘1’,‘2’])); 这样可实现多条件查询
凌云紫冥 2013-09-27
  • 打赏
  • 举报
回复
引用 6 楼 fzfei2 的回复:
[quote=引用 5 楼 beyondziming 的回复:] [quote=引用 4 楼 fzfei2 的回复:] [quote=引用 3 楼 beyondziming 的回复:] [quote=引用 2 楼 fzfei2 的回复:]

 
var db = window.openDatabase("users", "1",
                             "My database",
                             1024);
db.readTransaction(function(tx) {
 
  tx.executeSql("SELECT * FROM t_user where username = :name and score = :score",['小明','80'] function(tx, results) {
    var rows = results.rows;
    for (var index = 0; index < rows.length; index++) {
      var item = rows.item(index);
      alert(  item.username )
 
    }
  });
});
参考 http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
这是有sql的webdatabase,我已经实现了,但是出于兼容的考虑,要使用indexedDB,这个不是。 大侠辛苦了。[/quote] html5 本地数据库操作用这个 https://github.com/kripken/sql.js [/quote] 项目马上要出版本了,之前用的就是websql和indexedDB 这个几乎兼容所有支持HTML5的浏览器。 只是现在indexedDB遇到问题了,看能不能搞定,只差这一步了。[/quote] 你看下 https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB 好像不支持SQL语句 [/quote] 恩,不支持sql语句,我要实现的它这里没有,w3c官方文档我也没看到这部分内容,先自己想办法实现再说,效率不管了
fzfei2 2013-09-27
  • 打赏
  • 举报
回复
引用 5 楼 beyondziming 的回复:
[quote=引用 4 楼 fzfei2 的回复:] [quote=引用 3 楼 beyondziming 的回复:] [quote=引用 2 楼 fzfei2 的回复:]

 
var db = window.openDatabase("users", "1",
                             "My database",
                             1024);
db.readTransaction(function(tx) {
 
  tx.executeSql("SELECT * FROM t_user where username = :name and score = :score",['小明','80'] function(tx, results) {
    var rows = results.rows;
    for (var index = 0; index < rows.length; index++) {
      var item = rows.item(index);
      alert(  item.username )
 
    }
  });
});
参考 http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
这是有sql的webdatabase,我已经实现了,但是出于兼容的考虑,要使用indexedDB,这个不是。 大侠辛苦了。[/quote] html5 本地数据库操作用这个 https://github.com/kripken/sql.js [/quote] 项目马上要出版本了,之前用的就是websql和indexedDB 这个几乎兼容所有支持HTML5的浏览器。 只是现在indexedDB遇到问题了,看能不能搞定,只差这一步了。[/quote] 你看下 https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB 好像不支持SQL语句
凌云紫冥 2013-09-27
  • 打赏
  • 举报
回复
引用 4 楼 fzfei2 的回复:
[quote=引用 3 楼 beyondziming 的回复:] [quote=引用 2 楼 fzfei2 的回复:]

 
var db = window.openDatabase("users", "1",
                             "My database",
                             1024);
db.readTransaction(function(tx) {
 
  tx.executeSql("SELECT * FROM t_user where username = :name and score = :score",['小明','80'] function(tx, results) {
    var rows = results.rows;
    for (var index = 0; index < rows.length; index++) {
      var item = rows.item(index);
      alert(  item.username )
 
    }
  });
});
参考 http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
这是有sql的webdatabase,我已经实现了,但是出于兼容的考虑,要使用indexedDB,这个不是。 大侠辛苦了。[/quote] html5 本地数据库操作用这个 https://github.com/kripken/sql.js [/quote] 项目马上要出版本了,之前用的就是websql和indexedDB 这个几乎兼容所有支持HTML5的浏览器。 只是现在indexedDB遇到问题了,看能不能搞定,只差这一步了。
fzfei2 2013-09-27
  • 打赏
  • 举报
回复
引用 3 楼 beyondziming 的回复:
[quote=引用 2 楼 fzfei2 的回复:]

 
var db = window.openDatabase("users", "1",
                             "My database",
                             1024);
db.readTransaction(function(tx) {
 
  tx.executeSql("SELECT * FROM t_user where username = :name and score = :score",['小明','80'] function(tx, results) {
    var rows = results.rows;
    for (var index = 0; index < rows.length; index++) {
      var item = rows.item(index);
      alert(  item.username )
 
    }
  });
});
参考 http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
这是有sql的webdatabase,我已经实现了,但是出于兼容的考虑,要使用indexedDB,这个不是。 大侠辛苦了。[/quote] html5 本地数据库操作用这个 https://github.com/kripken/sql.js
凌云紫冥 2013-09-27
  • 打赏
  • 举报
回复
引用 2 楼 fzfei2 的回复:

 
var db = window.openDatabase("users", "1",
                             "My database",
                             1024);
db.readTransaction(function(tx) {
 
  tx.executeSql("SELECT * FROM t_user where username = :name and score = :score",['小明','80'] function(tx, results) {
    var rows = results.rows;
    for (var index = 0; index < rows.length; index++) {
      var item = rows.item(index);
      alert(  item.username )
 
    }
  });
});
参考 http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
这是有sql的webdatabase,我已经实现了,但是出于兼容的考虑,要使用indexedDB,这个不是。 大侠辛苦了。
fzfei2 2013-09-27
  • 打赏
  • 举报
回复

 
var db = window.openDatabase("users", "1",
                             "My database",
                             1024);
db.readTransaction(function(tx) {
 
  tx.executeSql("SELECT * FROM t_user where username = :name and score = :score",['小明','80'] function(tx, results) {
    var rows = results.rows;
    for (var index = 0; index < rows.length; index++) {
      var item = rows.item(index);
      alert(  item.username )
 
    }
  });
});
参考 http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
凌云紫冥 2013-09-27
  • 打赏
  • 举报
回复
select * from t_user where username = '小明' and score = '80' 类似这种在indexedDB怎么实现呢?
lovefield 是建立在 IndexedDB 上的关系查询引擎。它提供了类似 SQL 的语法,并且可以跨浏览器工作(目前支持 Chrome 37 及以上版本,Firefox 31 及以上版本,IE 10 及以上版本)。示例代码: <html>   <head>     <meta charset="utf-8" />     <title>Minimal example of using Lovefield</title>     [removed][removed]   </head>   <body>     [removed] var schemaBuilder = lf.schema.create('todo', 1); schemaBuilder.createTable('Item').     addColumn('id', lf.Type.INTEGER).     addColumn('description', lf.Type.STRING).     addColumn('deadline', lf.Type.DATE_TIME).     addColumn('done', lf.Type.BOOLEAN).     addPrimaryKey(['id']).     addIndex('idxDeadline', ['deadline'], false, lf.Order.DESC); var todoDb; var item; schemaBuilder.connect().then(function(db) {   todoDb = db;   item = db.getSchema().table('Item');   var row = item.createRow({     'id': 1,     'description': 'Get a cup of coffee',     'deadline': new Date(),     'done': false   });   return db.insertOrReplace().into(item).values([row]).exec(); }).then(function() {   return todoDb.select().from(item).where(item.done.eq(false)).exec(); }).then(function(results) {   results.forEach(function(row) {     console.log(row['description'], 'before', row['deadline']);   }); });     [removed]   </body> </html> 标签:lovefield

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧