以下是我的保存和读取的函数
比如我连续保存1 2 3 4 5 6 7条记录 读出时的顺序却是1 3 5 7 2 4 6 为何会这样?
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;
}