10 //#define START 70000001
11 //#define END 1010000000
33 "The driver reported the following diagnostics whilst running "
39 ret
= SQLGetDiagRec(type
, handle
, ++i
, state
, &native
, text
,
41 if (SQL_SUCCEEDED(ret
))
42 printf("%s:%ld:%ld:%s\n", state
, i
, native
, text
);
44 while( ret
== SQL_SUCCESS
);
48 check_error (SQLSMALLINT handleType
, SQLHANDLE handle
, int rc
, int line
)
52 cout
<< "Error " << rc
<< " at line: " << line
<< endl
;
57 while (SQLGetDiagRec (handleType
, handle
, i
++, state
, &native
, mesg
, 300,
61 cout
<< "state: " << state
<< endl
;
62 cout
<< "native: " << native
<< endl
;
63 cout
<< "mesg: " << mesg
<< endl
;
71 checkrc (int rc
, int line
)
75 cout
<< "Error " << rc
<< " at line: " << line
<< endl
;
81 readWriteTrans (SQLHDBC hdbc
)
83 int rc
= SQLSetConnectAttr (hdbc
, SQL_ATTR_ACCESS_MODE
,
84 (SQLPOINTER
) SQL_MODE_READ_WRITE
, 0);
85 checkrc (rc
, __LINE__
);
86 rc
= SQLEndTran (SQL_HANDLE_DBC
, hdbc
, SQL_COMMIT
);
87 checkrc (rc
, __LINE__
);
91 readOnlyTrans (SQLHDBC hdbc
)
93 int rc
= SQLSetConnectAttr (hdbc
, SQL_ATTR_ACCESS_MODE
,
94 (SQLPOINTER
) SQL_MODE_READ_ONLY
, 0);
95 checkrc (rc
, __LINE__
);
96 rc
= SQLEndTran (SQL_HANDLE_DBC
, hdbc
, SQL_COMMIT
);
97 checkrc (rc
, __LINE__
);
101 runInsertTest (SQLHANDLE henv
, SQLHANDLE hdbc
, SQLHANDLE hstmt
)
108 strcpy (sData
, "0123456789012345678901234567890123456789");
109 rc
= SQLPrepare (hstmt
, (unsigned char *) "insert into t1 values(?,12,13,14,15,16,17,18,19,20,21,100,100,'AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXX','GXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXA','OXXXXXXXXXXXXXXXXXXXXXXXXXOXXXXXXXXXXXXXXXXXXXXXXXXO')",SQL_NTS
);
110 checkrc (rc
, __LINE__
);
111 rc
= SQLBindParameter (hstmt
, 1, SQL_PARAM_INPUT
, SQL_C_LONG
, SQL_INTEGER
,
112 0, 0, &iHolder
, 0, NULL
);
113 checkrc (rc
, __LINE__
);
114 SQLINTEGER sLen
= SQL_NTS
;
115 /* rc = SQLBindParameter (hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
116 196, 0, (void *) sHolder, 0, &sLen);*/
117 checkrc (rc
, __LINE__
);
124 for (i
= START
; i
<= END
; i
++)
127 strcpy (sHolder
, sData
);
128 rc
= SQLExecute (hstmt
);
129 checkrc (rc
, __LINE__
);
131 rc
= SQLTransact (henv
, hdbc
, SQL_COMMIT
);
132 checkrc (rc
, __LINE__
);
137 printf("Total Record Inserted %d\n",tCount
);
143 main (int ac
, char **av
)
147 START
= atoi(getenv("START"));
148 END
= atoi(getenv("END"));
153 if (ac
==2) ddl
= true;
155 dsn
= (char *) "DSN=myodbc3;";
157 rc
= SQLAllocHandle (SQL_HANDLE_ENV
, SQL_NULL_HANDLE
, &henv
);
158 checkrc (rc
, __LINE__
);
159 SQLSetEnvAttr(henv
, SQL_ATTR_ODBC_VERSION
, (void *) SQL_OV_ODBC3
, 0);
161 rc
= SQLAllocHandle (SQL_HANDLE_DBC
, henv
, &hdbc
);
162 checkrc (rc
, __LINE__
);
163 rc
= SQLConnect (hdbc
,
164 (SQLCHAR
*) "test", (SQLSMALLINT
) strlen ("test"),
166 (SQLSMALLINT
) strlen ("root"),
167 (SQLCHAR
*) "manager",
168 (SQLSMALLINT
) strlen ("manager"));
170 SQLCHAR outstr
[1024];
171 SQLSMALLINT outstrlen
;
172 /* rc = SQLDriverConnect(hdbc, NULL, (SQLCHAR*)"DSN=myodbc3;UID=root;PWD=root123;", SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
174 if (SQL_SUCCEEDED(rc
)) {
175 printf("Connected\n");
176 //printf("Returned connection string was:\n\t%s\n", outstr);
177 if (rc
== SQL_SUCCESS_WITH_INFO
) {
178 printf("Driver reported the following diagnostics\n");
179 extract_error("SQLDriverConnect", hdbc
, SQL_HANDLE_DBC
);
182 fprintf(stderr
, "Failed to connect\n");
183 extract_error("SQLDriverConnect", hdbc
, SQL_HANDLE_DBC
);
186 //check_error (SQL_HANDLE_DBC, hdbc, rc, __LINE__);
187 checkrc (rc
, __LINE__
);
188 rc
= SQLSetConnectOption (hdbc
, SQL_AUTOCOMMIT
, SQL_AUTOCOMMIT_OFF
);
189 checkrc (rc
, __LINE__
);
190 rc
= SQLAllocHandle (SQL_HANDLE_STMT
, hdbc
, &hstmt
);
191 checkrc (rc
, __LINE__
);
193 rc
= SQLExecDirect(hstmt
, (SQLCHAR
*) "CREATE TABLE t1 (f1 INT NOT NULL , f2 INT NOT NULL , f3 INT NOT NULL , four INT NOT NULL , ten INT NOT NULL , twenty INT NOT NULL , onepercent INT NOT NULL , tenpercent INT NOT NULL , twentypercent INT NOT NULL , fiftypercent INT NOT NULL , unique3 INT NOT NULL , evenonepercent INT NOT NULL , oddonepercent INT NOT NULL , stringu1 CHAR (52) NOT NULL , stringu2 CHAR (52) NOT NULL , string4 CHAR (52) NOT NULL );", SQL_NTS
);
194 checkrc (rc
, __LINE__
);
195 rc
= SQLExecDirect(hstmt
, (SQLCHAR
*)"create index idx1 on t1(f1) tree unique;"
197 checkrc (rc
, __LINE__
);
199 runInsertTest (henv
, hdbc
, hstmt
);
201 rc = SQLExecDirect(hstmt, (SQLCHAR*) "DROP TABLE t1;", SQL_NTS );
202 checkrc (rc, __LINE__);
203 rc = SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT );
204 checkrc (rc, __LINE__);
206 rc
= SQLFreeHandle (SQL_HANDLE_STMT
, hstmt
);
207 checkrc (rc
, __LINE__
);
208 rc
= SQLDisconnect (hdbc
);
209 checkrc (rc
, __LINE__
);
210 rc
= SQLFreeHandle (SQL_HANDLE_DBC
, hdbc
);
211 checkrc (rc
, __LINE__
);
212 rc
= SQLFreeHandle (SQL_HANDLE_ENV
, henv
);
213 checkrc (rc
, __LINE__
);