1 /***************************************************************************
2 * Copyright (C) 2007 by www.databasecache.com *
3 * Contact: praba_tuty@databasecache.com *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 **************************************************************************/
19 //connect to the database first
21 DbRetVal rv
= conn
.open("root", "manager");
24 printf("Error during connection %d\n", rv
);
28 //get dbmgr to create table and index
29 DatabaseManager
*dbMgr
= conn
.getDatabaseManager();
30 if (dbMgr
== NULL
) { printf("Auth failed\n"); return -1;}
32 //create table with two fields, f1 integer and f2 string
34 tabDef
.addField("f1", typeInt
, 0, NULL
, true);
35 tabDef
.addField("f2", typeString
, 20);
36 rv
= dbMgr
->createTable("t1", tabDef
);
37 if (rv
!= OK
) { printf("Table creation failed\n"); return -1; }
38 printf("Table created\n");
40 //Creating hash index on field f1 of table t1
41 HashIndexInitInfo
*idxInfo
= new HashIndexInitInfo();
42 strcpy(idxInfo
->tableName
, "t1");
43 idxInfo
->list
.append("f1");
44 idxInfo
->indType
= hashIndex
;
45 rv
= dbMgr
->createIndex("indx1", idxInfo
);
46 if (rv
!= OK
) { printf("Index creation failed\n"); return -1; }
47 printf("Index created\n");
49 //open the table handle for doing DML operations
50 Table
*table
= dbMgr
->openTable("t1");
51 if (table
== NULL
) { printf("Unable to open table\n"); return -1; }
53 char name
[20] = "THIRU";
54 table
->bindFld("f1", &id
);
55 table
->bindFld("f2", name
);
60 char names
[10][20]={"Ganga", "Gopal", "Chaitra", "Aruna", "Vinayak", "Shekar",
61 "Pramod", "Rakesh", "Murthy", "Amit" };
63 //insert 10 tuples into the table t1
64 for(i
= 0; i
< 10; i
++)
66 conn
.startTransaction();
68 strcpy(name
, names
[i
]);
69 ret
= table
->insertTuple();
75 sprintf(msgBuf
,"Total rows inserted %d \n",icount
);
76 os::write(1,msgBuf
,strlen(msgBuf
));
78 //set the condition f1 >=5
81 p1
.setTerm("f1", OpGreaterThanEquals
, &val1
);
82 table
->setCondition(&p1
);
84 printf("Selection f1 >= 5 starts on table t1\n");
85 conn
.startTransaction();
87 printf("Tuple values:\n");
90 tuple
= (char*)table
->fetch() ;
91 if (tuple
== NULL
) { break; }
92 printf(" f1=%d f2=%s\n", id
, name
);
97 sprintf(msgBuf
,"Total Rows selected: %d \n", icount
);
98 os::write(1,msgBuf
,strlen(msgBuf
));
100 //unset the condtion set as we need to delete all rows
101 table
->setCondition(NULL
);
102 conn
.startTransaction();
107 tuple
= (char*)table
->fetch();
108 if (tuple
== NULL
) { break;}
109 table
->deleteTuple();
114 printf("Total Deleted Rows %d\n", icount
);
116 dbMgr
->closeTable(table
);
117 dbMgr
->dropTable("t1");
118 printf("Table dropped\n");