读书人

Berkeley db 的有关问题

发布时间: 2012-02-11 09:51:35 作者: rapoo

Berkeley db 的问题
以下是我的保存和读取的函数
比如我连续保存1 2 3 4 5 6 7条记录 读出时的顺序却是1 3 5 7 2 4 6 为何会这样?

C/C++ code
static BOOL SaveBlock( DB *db, char *index, CDBSerialize &obj ){    CDBOutStream out;    obj.save( out );    DBC *cursor;    if ( db->cursor( db, NULL, &cursor, 0 ) != 0 )    {        db->close( db, 0 );        return FALSE;    }    DBT key, data;    memset( &key, 0, sizeof( key ) );    memset( &data, 0, sizeof( data ) );    key.data = index;    key.size = strlen( index );    data.data = ( void * ) out.GetData();    data.size = out.GetSize();    return ( cursor->c_put( cursor, &key, &data, DB_KEYFIRST ) == 0 );}BOOL CIMDatabase::Load( PtrList &l ){    DB * db = GetDatabse( imHist );    if ( !db )        return FALSE;    DBC *cursor;    if ( db->cursor( db, NULL, &cursor, 0 ) != 0 )    {        db->close( db, 0 );        return FALSE;    }    DBT key, data;    memset( &key, 0, sizeof( key ) );    memset( &data, 0, sizeof( data ) );    while ( cursor->c_get( cursor, &key, &data, DB_NEXT ) == 0 )    {        string s( ( const char * ) key.data, key.size );    }    cursor->c_close( cursor );    db->close( db, 0 );    return TRUE;}


[解决办法]
哥们,请不要恶意灌水
[解决办法]
取的时候是不是该order一下啊。


[解决办法]
要不就增加一个字段,自增的,identity(1,1)
然后,取得时候按照这个自增的字段序号来取,

这样,就会保证和你插入的顺序一致了。

读书人网 >VC/MFC

热点推荐