commenting failing queries
[csql.git] / test / odbc / Parameters / parameter3.c
blobf1e7a8fa5b68ff5ea04ff99e9ac834efc028ff99
1 // CREATE TABLE "T1" WITH 10 FIELDS.
2 // INSERT SOME TUPLES IN IT.
3 // DELETE TUPLES WITH WHERE CLAUSE.
5 // Author : Jitendra Lenka
7 #include<stdio.h>
8 #include<stdlib.h>
9 #include<sql.h>
10 #include<sqlext.h>
11 #include<string.h>
13 //*************************************************************************
14 // ERROR CHECK FUNCTION
15 inline void checkrc(int rc,int line)
17 if(rc)
19 printf("ERROR %d at line %d\n",rc,line);
20 exit(1);
24 //*************************************************************************
25 // FUNCTION FOR INSERTING ROWS IN IT.
26 int InsertTest(SQLHANDLE env,SQLHANDLE dbc,SQLHANDLE stmt)
29 int ret;
30 int f1=90; // f1 field
31 short int f2=20;//f2 field
32 char f3[50]= "jitendra";
33 float f4 = 2.5;
34 float f5 = 10.50;
35 int f9 = 5;
36 long long f10 = 15000;
37 int result;
39 SQLINTEGER slen = SQL_NTS;
40 //***********************************
41 // STRUCTURE FIOR DATE DATATYPE
42 SQL_DATE_STRUCT date;
43 char strDate[30];
45 date.year=2008;
46 date.month=03;
47 date.day=18;
48 // strcpy(strDate,"{d '2008-03-18'}");
49 //*******************************
50 // STRUCTURE FOR TIME DATATYPE.
51 SQL_TIME_STRUCT time;
52 time.hour = 5;
53 time.minute = 22;
54 time.second = 10;
55 //*****************************
56 // STRUCTURE FOR TIMESTAMP DATATYPE
57 SQL_TIMESTAMP_STRUCT timestamp;
58 timestamp.year = 2008;
59 timestamp.month = 03;
60 timestamp.day = 18;
61 timestamp.hour = 5;
62 timestamp.minute = 22;
63 timestamp.second = 10;
64 timestamp.fraction = 764576;
65 //******************************
66 // PREPARE THE STATEMENT.
67 ret = SQLPrepare(stmt,(unsigned char*)"INSERT INTO T1 VALUES(?,?,?,?,?,?,?,?,?,?)",SQL_NTS);
68 checkrc(ret,__LINE__);
70 // BIND PARAMETER FOR ALL THE FIELD
72 ret = SQLBindParameter(stmt,1,SQL_PARAM_INPUT,SQL_C_SHORT,SQL_INTEGER,0,0,&f1,0,NULL);
73 checkrc(ret,__LINE__);
75 ret = SQLBindParameter(stmt,2,SQL_PARAM_INPUT,SQL_C_SSHORT,SQL_SMALLINT,0,0,&f2,0,NULL);
76 checkrc(ret,__LINE__);
78 ret = SQLBindParameter(stmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,196,0,(void*)f3,0,&slen);
79 checkrc(ret,__LINE__);
81 ret = SQLBindParameter(stmt,4,SQL_PARAM_INPUT,SQL_C_FLOAT,SQL_FLOAT,0,0,&f4,0,NULL);
82 checkrc(ret,__LINE__);
84 ret = SQLBindParameter(stmt,5,SQL_PARAM_INPUT,SQL_C_FLOAT,SQL_REAL,0,0,&f5,0,NULL);
85 checkrc(ret,__LINE__);
87 ret = SQLBindParameter(stmt,6,SQL_PARAM_INPUT,SQL_C_TYPE_DATE,SQL_TYPE_DATE,196,0,&date,sizeof(date),&slen);
88 checkrc(ret,__LINE__);
90 ret = SQLBindParameter(stmt,7,SQL_PARAM_INPUT,SQL_C_TYPE_TIME,SQL_TYPE_TIME,196,0,&time,sizeof(time),&slen);
91 checkrc(ret,__LINE__);
93 ret = SQLBindParameter(stmt,8,SQL_PARAM_INPUT,SQL_C_TYPE_TIMESTAMP,SQL_TYPE_TIMESTAMP,196,0,&timestamp,sizeof(timestamp),&slen);
94 checkrc(ret,__LINE__);
96 ret = SQLBindParameter(stmt,9,SQL_PARAM_INPUT,SQL_C_TINYINT,SQL_TINYINT,0,0,&f9,0,NULL);
97 checkrc(ret,__LINE__);
99 ret = SQLBindParameter(stmt,10,SQL_PARAM_INPUT,SQL_C_SBIGINT,SQL_BIGINT,0,0,&f10,0,NULL);
100 checkrc(ret,__LINE__);
102 int i,count=0;
103 // EXECUTE THE STATEMENT
104 for(i=0;i<20;i++)
106 f1++;
107 f2++;
108 f4++;
109 ret = SQLExecute(stmt);
110 checkrc(ret,__LINE__);
112 ret = SQLTransact(env,dbc,SQL_COMMIT);
113 checkrc(ret,__LINE__);
114 count++;
116 printf("Total row inserted=%d\n",count);
118 //***********************************************************************
119 // FETCH ROWS FROM THE TABLE "T1"......select * from T1;
120 int DeleteTest(SQLHANDLE env, SQLHANDLE dbc, SQLHANDLE stmt)
123 int ret;
124 int f1=10; // f1 field
125 short int f2=20;//f2 field
126 char f3[50]= "jitendra";
127 float f4 = 2.5;
128 float f5 = 10.50;
130 int f9 = 5;
131 long long f10 = 15000;
132 int result;
134 SQLINTEGER slen=SQL_NTS;
136 char strDate[20];
137 char strTime[20];
138 char strTimestamp[30];
140 SQL_DATE_STRUCT date;
143 date.year=2008;
144 date.month=03;
145 date.day=18;
147 //**********************************************
148 SQL_TIME_STRUCT time;
149 time.hour = 5;
150 time.minute = 22;
151 time.second = 10;
152 //*********************************************
153 SQL_TIMESTAMP_STRUCT timestamp;
154 timestamp.year = 2008;
155 timestamp.month = 03;
156 timestamp.day = 18;
157 timestamp.hour = 5;
158 timestamp.minute = 22;
159 timestamp.second = 10;
160 timestamp.fraction = 764576;
162 int f1temp,f2temp;
163 char f3temp[20];
164 float f4temp, f5temp;
165 SQL_DATE_STRUCT f6Date;
166 SQL_TIME_STRUCT f7Time;
167 SQL_TIMESTAMP_STRUCT f8Timestamp;
168 int f9temp;
169 long long f10temp;
171 ret = SQLPrepare(stmt,(unsigned char*)"DELETE FROM T1 WHERE F1=? AND F2=? AND F3=? AND F4=? AND F5=? AND F6=? AND F7=? AND F8=? AND F9=? AND F10=?",SQL_NTS);
172 checkrc(ret,__LINE__);
174 //ret = SQLBindParameter(stmt,1,SQL_PARAM_INPUT,SQL_C_SMALL,SQL_SMALL,0,0,)
175 ret = SQLBindParameter(stmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,0,0,&f1temp,0,NULL);
176 checkrc(ret,__LINE__);
178 ret = SQLBindParameter(stmt,2,SQL_PARAM_INPUT,SQL_C_SSHORT,SQL_INTEGER,0,0,&f2temp,0,NULL);
179 checkrc(ret,__LINE__);
181 ret = SQLBindParameter(stmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,196,0,(void*)f3temp,0,&slen);
182 checkrc(ret,__LINE__);
184 ret = SQLBindParameter(stmt,4,SQL_PARAM_INPUT,SQL_C_FLOAT,SQL_FLOAT,0,0,&f4temp,0,NULL);
185 checkrc(ret,__LINE__);
187 ret = SQLBindParameter(stmt,5,SQL_PARAM_INPUT,SQL_C_FLOAT,SQL_REAL,0,0,&f5temp,0,NULL);
188 checkrc(ret,__LINE__);
190 ret = SQLBindParameter(stmt,6,SQL_PARAM_INPUT,SQL_C_TYPE_DATE,SQL_TYPE_DATE,196,0,&f6Date,sizeof(f6Date),&slen);
191 checkrc(ret,__LINE__);
193 ret = SQLBindParameter(stmt,7,SQL_PARAM_INPUT,SQL_C_TYPE_TIME,SQL_TYPE_TIME,196,0,&f7Time,sizeof(f7Time),&slen);
194 checkrc(ret,__LINE__);
196 ret = SQLBindParameter(stmt,8,SQL_PARAM_INPUT,SQL_C_TYPE_TIMESTAMP,SQL_TYPE_TIMESTAMP,196,0,&f8Timestamp,sizeof(f8Timestamp),&slen);
197 checkrc(ret,__LINE__);
199 ret = SQLBindParameter(stmt,9,SQL_PARAM_INPUT,SQL_C_TINYINT,SQL_TINYINT,0,0,&f9temp,0,NULL);
200 checkrc(ret,__LINE__);
202 ret = SQLBindParameter(stmt,10,SQL_PARAM_INPUT,SQL_C_SBIGINT,SQL_BIGINT,0,0,&f10temp,0,NULL);
203 checkrc(ret,__LINE__);
204 //*******************************************************************************************************
206 int j, count=0;
210 f6Date=date;
211 f7Time=time;
212 f8Timestamp=timestamp;
213 for(j=0;j<20;j++)
215 f1temp=f1++;
216 f2temp=f2++;
217 strcpy(f3temp,"jitendra");
218 f4temp=f4++;
219 f5temp=f5;
220 f9temp=f9;
221 f10temp=f10;
223 ret = SQLExecute(stmt);
224 checkrc(ret,__LINE__);
225 count++;
228 ret = SQLTransact(env,dbc,SQL_COMMIT);
229 checkrc(ret,__LINE__);
231 printf("Total row deleted=%d\n",count);
235 int main()
237 SQLHENV env;
238 SQLHDBC dbc;
239 SQLHSTMT stmt;
240 SQLRETURN ret;
241 SQLCHAR outstr[1024];
242 SQLSMALLINT outstrlen;
244 // Aloocate an environment handle
245 ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&env);
246 checkrc(ret,__LINE__);
248 //we need odbc3 support
249 SQLSetEnvAttr(env,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
251 //ALLOCATE A Connection handle
252 ret = SQLAllocHandle(SQL_HANDLE_DBC,env,&dbc);
253 checkrc(ret,__LINE__);
255 // connect to the DSN mydsn
256 ret = SQLConnect (dbc,
257 (SQLCHAR *) "test", (SQLSMALLINT) strlen ("test"),
258 (SQLCHAR *) "root",
259 (SQLSMALLINT) strlen ("root"),
260 (SQLCHAR *) "manager",
261 (SQLSMALLINT) strlen (""));
263 if(SQL_SUCCEEDED(ret))
265 printf("\nConnected to the Data Source..\n");
269 else
271 printf("error in connection\n");
273 ret = SQLFreeHandle(SQL_HANDLE_DBC,dbc);
274 checkrc(ret,__LINE__);
276 ret = SQLFreeHandle(SQL_HANDLE_ENV,env);
277 checkrc(ret,__LINE__);
278 return 1;
282 //******************************************************************
283 // TABLE CREATED
284 ret = SQLAllocHandle(SQL_HANDLE_STMT,dbc,&stmt);
285 checkrc(ret,__LINE__);
287 SQLCHAR table[200]=
288 "CREATE TABLE T1(F1 INT,F2 SMALLINT,F3 CHAR(30),F4 FLOAT,F5 FLOAT,F6 DATE,F7 TIME,F8 TIMESTAMP,F9 TINYINT,F10 BIGINT)";
289 ret = SQLPrepare(stmt,table,SQL_NTS);
290 checkrc(ret,__LINE__);
291 ret = SQLExecute(stmt);
292 checkrc(ret,__LINE__);
293 printf("\nTABLE CREATED\n");
294 //*****************************
295 InsertTest(env,dbc,stmt);
296 DeleteTest(env,dbc,stmt);
298 //****************************************************************
299 SQLCHAR drop[100]="DROP TABLE T1";
300 ret = SQLPrepare(stmt,drop,SQL_NTS);
301 checkrc(ret,__LINE__);
302 ret = SQLExecute(stmt);
303 if(ret!=SQL_SUCCESS && ret !=SQL_SUCCESS_WITH_INFO)
304 printf("Statement failed\n");
305 else
306 printf("Table 'T1' dropped successfully\n");
308 ret = SQLFreeHandle(SQL_HANDLE_STMT,stmt);
309 checkrc(ret,__LINE__);
311 ret = SQLDisconnect(dbc);
312 checkrc(ret,__LINE__);
314 ret = SQLFreeHandle(SQL_HANDLE_DBC,dbc);
315 checkrc(ret,__LINE__);
317 ret = SQLFreeHandle(SQL_HANDLE_ENV,env);
318 checkrc(ret,__LINE__);
319 return 0;