Mnesia数据库操作整理(2)

10、获得指定数量的查询结果

mnesia:activity(async_dirty, fun mnesia:select/4, [ Tab, [ { MatchHead, [ Guard ], [ Result ] } ], Limit, read ] )

示例:




11、分页查询

直接上代码:

-module(cursor_server).  
-compile(export_all).  
-record(obj,{key,value}).  
-include_lib("stdlib/include/qlc.hrl").
  
make_cursor()->  
    QD=qlc:sort(mnesia:table(obj,[{traverse,select}])),  
    mnesia:activity(async_dirty,fun()->qlc:cursor(QD) end,mnesia_frag).  
  
get_next(Cursor)->  
    Get=fun()->qlc:next_answers(Cursor,5) end,  
    mnesia:activity(async_dirty,Get,mnesia_frag).  
  
del_cursor(Cursor)->  
    qlc:delete_cursor(Cursor). 


执行结果:


myCursor()->  
    Q=qlc:q([X||X<-mnesia:table(obj)]),  
    mnesia:activity(async_dirty,  
            fun()->qlc:cursor(Q,[]) end,  
            mnesia_frag).      
  
myNext(Cursor)->  
    Get=fun()->  
        qlc:next_answers(Cursor,5)  
        end,  
    mnesia:activity(async_dirty,Get,mnesia_frag).  
执行结果:


现在从数据库里选择,约束条件是key的值小于50.

myCursor()->  
    Q=qlc:q([X||X<-mnesia:table(obj),  
            X#obj.key<50]),  
    mnesia:activity(async_dirty,  
            fun()->qlc:cursor(Q,[]) end,  
            mnesia_frag).      
  
myNext(Cursor)->  
    Get=fun()->  
        qlc:next_answers(Cursor,5)  
        end,  
    mnesia:activity(async_dirty,Get,mnesia_frag).  
执行结果:


现在添加对选取的数据进行排序的功能:

yCursor()->  
    Q1=qlc:q([X||X<-mnesia:table(obj),  
            X#obj.key<50]),  
    Q2=qlc:keysort(2,Q1,[{order,ascending}]),  
    mnesia:activity(async_dirty,  
            fun()->qlc:cursor(Q2,[]) end,  
            mnesia_frag).      
  
myNext(Cursor)->  
    Get=fun()->  
        qlc:next_answers(Cursor,5)  
        end,  
    mnesia:activity(async_dirty,Get,mnesia_frag).  
执行结果:






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值