⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twoindex1.c

📁 b树实现源码,linux和unix下运行,速度快,极好用
💻 C
字号:
#include<CSql.h>int main(){    Connection conn;    DbRetVal rv = conn.open("root", "manager");    if (rv != OK)    {       printf("Error during connection %d\n", rv);       return -1;    }    DatabaseManager *dbMgr = conn.getDatabaseManager();    if (dbMgr == NULL) { printf("Auth failed\n"); return -1;}    TableDef tabDef;    tabDef.addField("f1", typeInt, 0, NULL, true);    tabDef.addField("f2", typeInt, 0, NULL, true);    rv = dbMgr->createTable("t1", tabDef);    if (rv != OK) { printf("Table creation failed\n"); return -1; }    printf("Table created\n");    HashIndexInitInfo *idxInfo = new HashIndexInitInfo();    strcpy(idxInfo->tableName, "t1");    idxInfo->list.append("f1");    idxInfo->isUnique = true;    idxInfo->isPrimary = true;    idxInfo->indType = hashIndex;    rv = dbMgr->createIndex("indx1", idxInfo);    if (rv != OK) { printf("Index creation failed\n"); return -1; }    printf("Index created for f1\n");    printf("size of index field list %d\n", idxInfo->list.size());    idxInfo->list.remove("f1");    printf("size of index field list %d\n", idxInfo->list.size());    idxInfo->list.append("f2");    printf("size of index field list %d\n", idxInfo->list.size());    rv = dbMgr->createIndex("indx2", idxInfo);    if (rv != OK) { printf("Index creation failed\n"); return -1; }    printf("Index created for f2\n");    delete idxInfo;    Table *table = dbMgr->openTable("t1");    if (table == NULL) { printf("Unable to open table\n"); return -1; }    int id1 = 0, id2=0;    table->bindFld("f1", &id1);    table->bindFld("f2", &id2);    char *tuple;    int ret;    int i;    int icount =0;    rv = conn.startTransaction();    if (rv != OK) exit(1);    for(i = 0; i< 10; i++)    {        id1= i;        id2= i+100;        ret = table->insertTuple();        if (ret != 0) break;        icount++;    }    conn.commit();    printf("Total tuples inserted: %d\n", icount);    Condition p1, p2;    int val1 = 0;    p1.setTerm("f1", OpEquals, &val1);    p2.setTerm("f2", OpEquals, &val1);    table->setCondition(&p1);    rv =conn.startTransaction();    if (rv != OK) exit(1);    for(i = 0; i< 10; i++)    {            val1 = i;        table->execute();        tuple = (char*)table->fetch() ;        if (tuple == NULL) {printf("loop break in %d\n", i);table->close();break;}        printf("I:tuple value is %d %d \n", id1, id2);        table->close();    }    table->setCondition(&p2);    for(i = 0; i< 10; i++)    {            val1 = i+100;        table->execute();        tuple = (char*)table->fetch() ;        if (tuple == NULL) {printf("loop break in %d\n", i);table->close();break;}        printf("II:tuple value is %d %d \n", id1, id2);        table->close();    }    conn.commit();    rv  = conn.startTransaction();    if (rv != OK) exit (1);    table->setCondition(&p1);    val1 = 0;    table->execute();    tuple = (char*)table->fetch() ;    if (tuple != NULL) {        id2=99;        table->updateTuple();    }    table->close();    table->setCondition(&p2);    val1 = 109;    table->execute();    tuple = (char*)table->fetch() ;    if (tuple != NULL) {        id1=99;        table->updateTuple();    }    table->close();    conn.commit();    rv = conn.startTransaction();    if (rv != OK) exit (1);    table->setCondition(&p1);    val1 = 1;    table->execute();    tuple = (char*)table->fetch() ;    if (tuple != NULL) {        table->deleteTuple();    }    table->close();    table->setCondition(&p2);    val1 = 101;    table->execute();    tuple = (char*)table->fetch() ;    if (tuple != NULL) {        table->deleteTuple();    }    table->close();    conn.commit();    int count =0;    rv = conn.startTransaction();    table->setCondition(NULL);    if (rv != OK) exit (1);    table->execute();    while((tuple = (char*)table->fetch())!= NULL) {        printf("tuple value is %d %d \n", id1, id2);        count++;    }    table->close();    conn.commit();    printf("Total rows selected %d\n", count);    dbMgr->closeTable(table);    dbMgr->dropTable("t1");    conn.close();    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -