#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;
}
分享到:
相关推荐
Tokyo Cabinet提供了多种数据存储方式,包括哈希数据库(TCHDB)、B+树数据库(TCBDB)、定长数据库(TCFDB)、表格数据库(TCTDB)、内存哈希数据库(TCMHB)和内存B+树数据库(TCNDB),每种都有特定的应用场景和...
- **TCTDB**:表格数据库,每条记录有主键和命名字段,支持部分复杂查询。 #### MongoDB MongoDB被视为NoSQL世界中功能最全面的数据库之一,结合了Key-Value存储的高性能和传统RDBMS的查询功能。它采用BSON文档...
单表记录数的增长导致查询效率降低,而读写分离模式在面对大量写操作时显得力不从心。随着并发请求数的增加,MySQL的性能也会显著下降。为了解决这些问题,一种名为Tokyo Cabinet的Key-Value键值数据库应运而生,由...
例如,创建一个新的数据库、插入数据、查询数据等。 10. **文档资源**: 提供的`Tokyocabinet_Tokyotyrant文档大合集.mht`文件包含Tokyocabinet和Tokyotyrant的详细文档,包括API参考、使用示例和常见问题解答。你...