试用FastDB,测试结果在无盘模式(纯内存)很实用

 

没有什么说的,以下是常用的功能代码.

#include "fastdb.h"
#include <stdio.h>

USE_FASTDB_NAMESPACE

const int nRecords = 100000;
const int arraySize = 100;

class RecordUser {
  public:
    char const* szName;
  char const* szEmail;

    TYPE_DESCRIPTOR(((KEY(szName, INDEXED)), KEY(szEmail, HASHED)));
};


dbDatabase db;
REGISTER_IN(RecordUser,&db);

int main( int argc , char* argv[] )
{
  int n;
  if(db.open("Users")){
        RecordUser rec;
    char szName[32];
    char szEmail[32];
    for(int i=0;i<20;i++)
    {
      sprintf(szName,"name%00000008d",i);
      rec.szName = szName;

      sprintf(szEmail,"email%d",i);
      rec.szEmail = szEmail;
      insert(rec);
        }
    db.commit();

    dbCursor<RecordUser> cursor1;

    dbQuery sql1,sql2;

    sql1 = "szName=",szName;
    sql2 = "order by szName desc";
    sprintf(szName,"name%00000008d",5);

    //cursor1.selectByKey(char const* key, void const* value);
    n = cursor1.select(sql1,dbCursorForUpdate);
    if(n>0)
    {
      do{
        printf("szName=%s szEmail=%s id=%d\r\n",cursor1->szName,cursor1->szEmail,cursor1.currentId());
        cursor1->szEmail="[email protected]";
        cursor1.update();
      } while (cursor1.next());
    }
    //cursor1.removeAll();
    //cursor1.remove(); //删除当前记录
    //cursor1.removeAllSelected();//删除选择的记录

    printf("\r\n");

    //cursor1.setSelectionLimit(1000);//cursor1.unsetSelectionLimit();

    n = cursor1.select(sql2,dbCursorViewOnly);
    if(n>0)
    {
      do{
        printf("szName=%s szEmail=%s id=%d\r\n",cursor1->szName,cursor1->szEmail,cursor1.currentId());
      } while (cursor1.next());
    }
  }
  return 0;
}

你可能感兴趣的:(试用FastDB,测试结果在无盘模式(纯内存)很实用)