1 /*Use Connection String "DSN=mycsql;MODE=csql;SERVER=127.0.0.1;PORT=5678;" for Connect Data Source
2 * create table Ti with one integer field and one char field. insert some records into it.
3 delete from t1 where f1=10.
4 sqlrowcount() should return 1.
6 delete from t1 where f1 > 900
7 sqlrowcount shpuld return 100.
9 insert one record with values(1001,'1000')
10 sqlrowcount should return 1.
12 update T1 set f2='thousand' where f1<10.
13 sqlrowcount() should return 9
16 AUTHOR : Jitendra Lenka
26 inline void checkrc(int rc
,int line
)
30 printf("ERROR %d at line %d\n",rc
,line
);
35 //*************************************************************************
36 int InsertTest(SQLHANDLE env
,SQLHANDLE dbc
,SQLHANDLE stmt
)
41 char f2
[15]="jitendra";//f2 field
42 SQLINTEGER slen
=SQL_NTS
;
44 ret
= SQLPrepare(stmt
,(unsigned char*)"INSERT INTO T1 VALUES(?,?)",SQL_NTS
);
45 checkrc(ret
,__LINE__
);
49 ret
= SQLBindParameter(stmt
,1,SQL_PARAM_INPUT
,SQL_C_LONG
,SQL_INTEGER
,0,0,&f1
,0,NULL
);
50 checkrc(ret
,__LINE__
);
52 ret
= SQLBindParameter(stmt
,2,SQL_PARAM_INPUT
,SQL_C_CHAR
,SQL_CHAR
,196,0,(void*)f2
,0,&slen
);
53 checkrc(ret
,__LINE__
);
63 ret
= SQLExecute(stmt
);
64 checkrc(ret
,__LINE__
);
66 ret
= SQLTransact(env
,dbc
,SQL_COMMIT
);
67 checkrc(ret
,__LINE__
);
70 printf("Total row inserted=%d\n",count
);
73 //***********************************************************************
85 SQLSMALLINT outstrlen
;
87 // Aloocate an environment handle
88 ret
=SQLAllocHandle(SQL_HANDLE_ENV
,SQL_NULL_HANDLE
,&env
);
89 checkrc(ret
,__LINE__
);
91 //we need odbc3 support
92 SQLSetEnvAttr(env
,SQL_ATTR_ODBC_VERSION
,(void*)SQL_OV_ODBC3
,0);
94 //ALLOCATE A Connection handle
95 ret
= SQLAllocHandle(SQL_HANDLE_DBC
,env
,&dbc
);
96 checkrc(ret
,__LINE__
);
98 // connect to the DSN mydsn
99 ret
= SQLConnect (dbc
,
100 (SQLCHAR
*) "DSN=mycsql;MODE=csql;SERVER=127.0.0.1;PORT=5678;", (SQLSMALLINT
) strlen ("DSN=mycsql;MODE=csql;SERVER=127.0.0.1;PORT=5678;"),
102 (SQLSMALLINT
) strlen ("root"),
103 (SQLCHAR
*) "manager",
104 (SQLSMALLINT
) strlen (""));
107 if(SQL_SUCCEEDED(ret
))
109 printf("\nConnected to the Data Source..\n");
116 printf("error in connection\n");
117 ret
= SQLFreeHandle(SQL_HANDLE_DBC
,dbc
);
118 checkrc(ret
,__LINE__
);
120 ret
= SQLFreeHandle(SQL_HANDLE_ENV
,env
);
121 checkrc(ret
,__LINE__
);
127 //******************************************************************
129 ret
= SQLAllocHandle(SQL_HANDLE_STMT
,dbc
,&stmt
);
130 checkrc(ret
,__LINE__
);
133 "CREATE TABLE T1(F1 INT,F2 char(30))";
134 ret
= SQLPrepare(stmt
,table
,SQL_NTS
);
135 checkrc(ret
,__LINE__
);
137 ret
= SQLExecute(stmt
);
138 checkrc(ret
,__LINE__
);
139 printf("\nTABLE CREATED\n");
140 //****************************************************************
143 InsertTest(env
,dbc
,stmt
);
144 //*****************************************************************
146 printf("delete from T1 where F1=10\n");
147 SQLCHAR delete1
[50]="DELETE FROM T1 WHERE F1=10;";
149 ret
= SQLPrepare(stmt
,delete1
,SQL_NTS
);
150 checkrc(ret
,__LINE__
);
152 ret
= SQLExecute(stmt
);
153 checkrc(ret
,__LINE__
);
158 ret
= SQLRowCount(stmt
,&nor
);
159 printf("sqlrowcount() returns=%d\n",nor
); // nor should return 1.
161 ret
= SQLFreeStmt(stmt
,SQL_RESET_PARAMS
);
162 checkrc(ret
,__LINE__
);
163 //************************************************
165 printf("\ndelete from T1 where F1 > 900\n");
166 ret
= SQLPrepare(stmt
,(unsigned char*)"DELETE FROM T1 WHERE F1 > 900",SQL_NTS
);
167 checkrc(ret
,__LINE__
);
169 ret
= SQLExecute(stmt
);
170 checkrc(ret
,__LINE__
);
173 ret
= SQLRowCount(stmt
,&nor1
);
174 printf("sqlrowcount() returns=%d\n",nor1
);
175 if(nor1
!=100)return 1;
177 ret
= SQLFreeStmt(stmt
,SQL_RESET_PARAMS
);
178 checkrc(ret
,__LINE__
);
179 //*************************************************************
180 printf("\ninsert into T1 values(1001,'1000')\n");
181 ret
= SQLPrepare(stmt
,(unsigned char*)"INSERT INTO T1 VALUES(1001,'1000')",SQL_NTS
);
182 checkrc(ret
,__LINE__
);
184 ret
= SQLExecute(stmt
);
185 checkrc(ret
,__LINE__
);
188 ret
= SQLRowCount(stmt
,&nor2
);
189 checkrc(ret
,__LINE__
);
191 printf("sqlrowcount() returns=%d\n",nor2
);
193 ret
= SQLFreeStmt(stmt
,SQL_RESET_PARAMS
);
195 //*****************************************************
196 printf("\nUPDATE T1 SET F2='THOUSAND' WHERE F1<10\n");
197 ret
= SQLPrepare(stmt
,(unsigned char*)"UPDATE T1 SET F2='THOUSAND' WHERE F1<10",SQL_NTS
);
198 checkrc(ret
,__LINE__
);
200 ret
= SQLExecute(stmt
);
201 checkrc(ret
,__LINE__
);
204 ret
= SQLRowCount(stmt
,&nor3
);
206 checkrc(ret
,__LINE__
);
207 printf("sqlrowcount() returns=%d\n",nor3
);
209 /*ret = SQLFreeStmt(stmt,SQL_RESET_PARAMS);
210 checkrc(ret,__LINE__);*/
211 //***********************************************
213 //FetchTest(env,dbc,stmt);
215 //****************************************************************
217 ret
= SQLPrepare(stmt
,(unsigned char*)"drop table T1;",SQL_NTS
);
218 checkrc(ret
,__LINE__
);
220 ret
= SQLExecute(stmt
);
221 checkrc(ret
,__LINE__
);
222 printf("Table 'T1' dropped\n");
224 ret
= SQLFreeHandle(SQL_HANDLE_STMT
,stmt
);
225 checkrc(ret
,__LINE__
);
227 ret
= SQLDisconnect(dbc
);
228 checkrc(ret
,__LINE__
);
230 ret
= SQLFreeHandle(SQL_HANDLE_DBC
,dbc
);
231 checkrc(ret
,__LINE__
);
233 ret
= SQLFreeHandle(SQL_HANDLE_ENV
,env
);
234 checkrc(ret
,__LINE__
);