1 /*One connection working with multiple statements
2 *create table T1 with two fields,
3 *One connection working with multiple statements simultaneously for csql,
5 *create 3 stmts for inserting into 5 tables and set the same connection
6 *insert into all 3 tables and commit the transaction
8 *select the records from 3 tables in same connection
10 *Author : Nihar Paital
18 AbsSqlConnection
*con
= createConnection();
19 rv
= con
->connect("root","manager");
21 AbsSqlStatement
*stmt1
= createStatement();
22 AbsSqlStatement
*stmt2
= createStatement();
23 AbsSqlStatement
*stmt3
= createStatement();
26 stmt1
->setConnection(con
);
27 strcpy(statement
,"CREATE TABLE T1(F1 INT,F2 CHAR(20));");
29 rv
= stmt1
->prepare(statement
);
30 if(rv
!=OK
) { delete stmt1
; delete con
; return 1; }
31 rv
= stmt1
->execute(rows
);
32 if(rv
!=OK
) { delete stmt1
; delete con
; return 2; }
33 printf("Table created\n");
35 stmt2
->setConnection(con
);
36 strcpy(statement
,"CREATE TABLE T2(F1 INT,F2 CHAR(20));");
38 rv
= stmt2
->prepare(statement
);
39 if(rv
!=OK
) { delete stmt2
; delete con
; return 3; }
40 rv
= stmt2
->execute(rows
);
41 if(rv
!=OK
) { delete stmt2
; delete con
; return 4; }
42 printf("Table created\n");
44 stmt3
->setConnection(con
);
45 strcpy(statement
,"CREATE TABLE T3(F1 INT,F2 CHAR(20));");
47 rv
= stmt3
->prepare(statement
);
48 if(rv
!=OK
) { delete stmt3
; delete con
; return 5; }
49 rv
= stmt3
->execute(rows
);
50 if(rv
!=OK
) { delete stmt3
; delete con
; return 6; }
51 printf("Table created\n");
56 // insert records into T1
58 char f2varT1
[24] = "lakshya";
59 printf("Inserting records into table T1\n");
60 strcpy(statement
,"INSERT INTO T1 VALUES(?,?);");
61 rv
= stmt1
->prepare(statement
);
62 if(rv
!=OK
) { delete stmt1
; delete con
; return 3; }
64 rv
= con
->beginTrans();
65 for(int j
=0;j
<5;j
++) {
68 stmt1
->setIntParam(1,f1varT1
);
69 stmt1
->setStringParam(2,f2varT1
);
70 rv
= stmt1
->execute(rows
);
74 printf("%d rows inserted into table T1\n",count
);
76 // insert records into T2
78 char f2varT2
[24] = "lakshya";
79 printf("Inserting records into table T2\n");
80 strcpy(statement
,"INSERT INTO T2 VALUES(?,?);");
81 rv
= stmt2
->prepare(statement
);
82 if(rv
!=OK
) { delete stmt2
; delete con
; return 3; }
84 for(int j
=5;j
<10;j
++) {
87 stmt2
->setIntParam(1,f1varT2
);
88 stmt2
->setStringParam(2,f2varT2
);
89 rv
= stmt2
->execute(rows
);
93 printf("%d rows inserted into table T2\n",count
);
95 // insert records into T3
97 char f2varT3
[24] = "lakshya";
98 printf("Inserting records into table T3\n");
99 strcpy(statement
,"INSERT INTO T3 VALUES(?,?);");
100 rv
= stmt3
->prepare(statement
);
101 if(rv
!=OK
) { delete stmt3
; delete con
; return 3; }
103 for(int j
=10;j
<15;j
++) {
106 stmt3
->setIntParam(1,f1varT3
);
107 stmt3
->setStringParam(2,f2varT3
);
108 rv
= stmt3
->execute(rows
);
112 printf("%d rows inserted into table T3\n",count
);
118 //*******************************************
119 printf("SELECT * FROM T1;\n");
120 strcpy(statement
,"SELECT * FROM T1;");
121 rv
= stmt1
->prepare(statement
);
122 if(rv
!=OK
) { delete stmt1
; delete con
; return 4; }
123 stmt1
->bindField(1,&f1varT1
);
124 stmt1
->bindField(2,f2varT1
);
127 rv
= con
->beginTrans();
129 printf("T1.f1\tT1.f2\n");
130 stmt1
->execute(rows
);
131 while((char*)stmt1
->fetch()) {
132 printf("%d\t%s\n",f1varT1
,f2varT1
);
138 printf("SELECT * FROM T2;\n");
139 strcpy(statement
,"SELECT * FROM T2;");
140 rv
= stmt2
->prepare(statement
);
141 if(rv
!=OK
) { delete stmt2
; delete con
; return 4; }
142 stmt2
->bindField(1,&f1varT2
);
143 stmt2
->bindField(2,f2varT2
);
145 stmt2
->execute(rows
);
146 printf("T2.f1\tT2.f2\n");
147 while((char*)stmt2
->fetch()) {
148 printf("%d\t%s\n",f1varT2
,f2varT2
);
154 printf("SELECT * FROM T3;\n");
155 strcpy(statement
,"SELECT * FROM T3;");
156 rv
= stmt3
->prepare(statement
);
157 if(rv
!=OK
) { delete stmt3
; delete con
; return 4; }
158 stmt3
->bindField(1,&f1varT3
);
159 stmt3
->bindField(2,f2varT3
);
161 stmt3
->execute(rows
);
162 printf("T3.f1\tT3.f2\n");
163 while((char*)stmt3
->fetch()) {
164 printf("%d\t%s\n",f1varT3
,f2varT3
);
171 strcpy(statement
,"DROP TABLE T1;");
172 rv
= stmt1
->prepare(statement
);
173 rv
= stmt1
->execute(rows
);
174 if(rv
==OK
){printf("Table T1 dropped successfully\n");}
176 strcpy(statement
,"DROP TABLE T2;");
177 rv
= stmt2
->prepare(statement
);
178 rv
= stmt2
->execute(rows
);
179 if(rv
==OK
){printf("Table T2 dropped successfully\n");}
181 strcpy(statement
,"DROP TABLE T3;");
182 rv
= stmt3
->prepare(statement
);
183 rv
= stmt3
->execute(rows
);
184 if(rv
==OK
){printf("Table T3 dropped successfully\n");}
186 stmt1
->free(); delete stmt1
;
187 stmt2
->free(); delete stmt2
;
188 stmt3
->free(); delete stmt3
;