#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 <= 1000 tctdbqryaddcond(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; }