posts - 58,  comments - 75,  trackbacks - 0
Berkeley DB在Queue模式下的使用

Queue模式读数据的一个简单的示例
在Queue模式下读数据,记录(Dbt)要调用set_ulen函数和set_flags函数

#include < time.h >
#include < iostream >
#include < bdb/db_cxx.h >

struct ValueType
{
    int _int;
    char _char;
    char _array[256];
};

void readDB( void )
{
    Db bdb( 0, 0 );

    bdb.set_re_len( sizeof( ValueType ) ); //用Queue模式一定要调用,而且一定要在open前调用
    bdb.set_re_pad( 0x00 ); //为了字符串的填充为0。

    bdb.open( 0, "SaveRecodeDB.db", 0, DB_QUEUE, DB_CREATE, 0 );

    size_t k;
    ValueType v;
    Dbt key( &k, sizeof( size_t ) );
    key.set_ulen( sizeof( size_t ) );

    Dbt value( &v, sizeof( ValueType ) );
    value.set_ulen( sizeof( ValueType ) );
    value.set_flags( DB_DBT_USERMEM );

    //直接用数据库的读函数
    for( int i=0; i<1000000; ++i )
    {
        bdb.get( 0, &key, &value, DB_CONSUME );
    }

    bdb.close( 0 );
}

int main( int argc, char* argv[] )
{
    clock_t et1 = clock();
    readDB();
    clock_t et2 = clock();

    std::cout << "work is fine, " << "have times : " << et2 - et1 << std::endl;
    return 0;

posted on 2007-05-30 13:58 walkspeed 阅读(1653) 评论(2)  编辑 收藏 引用 所属分类: C++语言Berkeley DB

FeedBack:
# re: Berkeley DB在Queue模式下的使用2
2007-06-04 14:34 | 看图软件
再详细些就好了  回复  更多评论
  
# re: Berkeley DB在Queue模式下的使用2
2007-06-14 21:34 | ..
你这个是C语言下的版本吗,编译都是错误。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(4)

随笔分类(64)

随笔档案(58)

文章分类(3)

文章档案(3)

相册

收藏夹(9)

C++零碎

好友

搜索

  •  

积分与排名

  • 积分 - 157797
  • 排名 - 163

最新评论

阅读排行榜

评论排行榜