UNQLITE_APIEXPORT int unqlite_kv_fetch(unqlite *pDb,const void *pKey,int nKeyLen,void *pBuf,unqlite_int64 /* in|out */*pBufLen);
UNQLITE_APIEXPORT int unqlite_kv_fetch_callback(unqlite *pDb,const void *pKey,
int nKeyLen,int (*xConsumer)(const void *,unsigned int,void *),void *pUserData);
unqlite_kv_fetch从数据库中获取一条记录,并将其内容复制到用户提供的缓冲区。此接口支持动态和静态分配缓冲区。如果获取的是一个比较大的数据,我们推荐使用unqlite_kv_fetch_callback,这个借口通过回调处理数据.
#include <unqlite.h>
int rc;
unqlite *pDb;
size_t nBytes; //Data length
char *zBuf; //动态申请内存.
// Open our database;
rc = unqlite_open(&pDb,"test.db",UNQLITE_OPEN_READONLY|UNQLITE_OPEN_MMAP);
if( rc != UNQLITE_OK ){ return; }
//次数仅仅获得数据大大小。
rc = unqlite_kv_fetch(pDb,"record",-1,NULL,&nBytes);
if( rc != UNQLITE_OK ){
return;
}
//通过malloc动态申请内存.
zBuf = (char *)malloc(nBytes);
if( zBuf == NULL ){ return; }
//将数据存放到buf中.
unqlite_kv_fetch(pDb,"record",-1,zBuf,&nBytes);
//Play with zBuf...
free(zBuf);
//Close our database handle
unqlite_close(pDb);