tctdb的数据查询
#include <tcutil.h>#include <tctdb.h>#include <stdlib.h>#include <stdbool.h>#include <stdint.h>int main(int argc, char **argv){TCTDB *tdb;int ecode, i, rsiz;const char *rbuf, *name;TCMAP *cols;TDBQRY *qry;TCLIST *res;/* 创建一个数据库对象 */tdb = tctdbnew();/* 打开数据库对象 */if(!tctdbopen(tdb, "db.tdb", TDBOWRITER | TDBOCREAT)){ ecode = tctdbecode(tdb); fprintf(stderr, "open error: %s\\n", tctdberrmsg(ecode));}/* 检索记录 */qry = tctdbqrynew(tdb); // 建立索引 tctdbsetindex(tdb,"ct",TDBITLEXICAL);// 类似SELECT * FROM tbl WHERE sid = '100000425450915'//tctdbqryaddcond(qry, "sid", TDBQCSTREQ, "100000425450915");// 类似SELECT * FROM tbl WHERE id >= 1 and id <= 1000tctdbqryaddcond(qry, "id", TDBQCNUMBT, "1,1000");//tctdbqryaddcond(qry, "lang", TDBQCSTROR, "ja,en");tctdbqrysetorder(qry, "ct", TDBQOSTRDESC);tctdbqrysetmax(qry, 10);res = tctdbqrysearch(qry);for(i = 0; i < tclistnum(res); i++){ rbuf = tclistval(res, i, &rsiz); cols = tctdbget(tdb, rbuf, rsiz); if(cols) { printf("%s", rbuf); tcmapiterinit(cols); while((name = tcmapiternext2(cols)) != NULL){ printf("\t%s\t%s", name, tcmapget2(cols, name)); } printf("\n"); tcmapdel(cols); }}tclistdel(res);tctdbqrydel(qry);/* 关闭数据库 */if(!tctdbclose(tdb)){ ecode = tctdbecode(tdb); fprintf(stderr, "close error: %s\\n", tctdberrmsg(ecode));}/* *销毁数据库对象 */tctdbdel(tdb);return 0;}
页:
[1]