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 <= 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;
}


你可能感兴趣的:(C++,c,C#)