bestscw 发表于 2013-1-26 14:28:30

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]
查看完整版本: tctdb的数据查询