Berkeley db 的问题
以下是我的保存和读取的函数
比如我连续保存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;}