1 #include "common.h"
2
3 #include <common/test_assert.h>
4
5 /* test error on prepared statement, from Nathaniel Talbott test */
6
7 static char software_version[] = "$Id: preperror.c 487476 2015-12-17 19:48:39Z ucko $";
8 static void *no_unused_var_warn[] = { software_version, no_unused_var_warn };
9
10 int
main(int argc,char * argv[])11 main(int argc, char *argv[])
12 {
13 SQLLEN cbInString = SQL_NTS;
14 char buf[256];
15 SQLTCHAR msg[256];
16 SQLTCHAR sqlstate[6];
17
18 odbc_connect();
19
20 odbc_command("CREATE TABLE #urls ( recdate DATETIME ) ");
21
22 /* test implicit conversion error */
23 CHKExecDirect(T("INSERT INTO #urls ( recdate ) VALUES ( '2003-10-1 10:11:1 0' )"), SQL_NTS, "E");
24
25 /* test prepared implicit conversion error */
26 CHKPrepare(T("INSERT INTO #urls ( recdate ) VALUES ( ? )"), SQL_NTS, "SI");
27
28 strcpy(buf, "2003-10-1 10:11:1 0");
29 CHKBindParameter(1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 128, 0, buf, sizeof(buf), &cbInString, "SI");
30
31 CHKExecute("E");
32
33 CHKGetDiagRec(SQL_HANDLE_STMT, odbc_stmt, 1, sqlstate, NULL, msg, ODBC_VECTOR_SIZE(buf), NULL, "SI");
34 printf("err=%s\n", C(msg));
35
36 /* assure initial state */
37 odbc_reset_statement();
38
39 /* try to prepare and execute a statement with error (from DBD::ODBC test) */
40 if (CHKPrepare(T("SELECT XXNOTCOLUMN FROM sysobjects"), SQL_NTS, "SE") == SQL_SUCCESS)
41 CHKExecute("E");
42
43 CHKGetDiagRec(SQL_HANDLE_STMT, odbc_stmt, 1, sqlstate, NULL, msg, ODBC_VECTOR_SIZE(buf), NULL, "SI");
44 printf("err=%s\n", C(msg));
45
46
47 odbc_disconnect();
48
49 printf("Done.\n");
50 ODBC_FREE();
51 return 0;
52 }
53