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)
然后,取得时候按照这个自增的字段序号来取,
这样,就会保证和你插入的顺序一致了。