/* * cl SQLBindParameter_bittest.c /DWIN32 odbc32.lib */ #ifdef WIN32 #include #endif #include #include SQLTCHAR *DSNPrm= (SQLTCHAR*) "PostgreSQL35W"; SQLTCHAR *DSNUid= (SQLTCHAR*) ""; SQLTCHAR *DSNPwd= (SQLTCHAR*) ""; char *droptbl = "DROP TABLE IF EXISTS bbb CASCADE"; char *createtbl = "CREATE TABLE bbb(key BIT(10) Primary Key)"; #define CHECK_STMT(x) \ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) \ sqlerrexit(rc,SQL_HANDLE_STMT, x) void sqlerrexit(RETCODE rc, SQLINTEGER type, SQLHANDLE handle) { SQLCHAR SqlState[6], *sq = &SqlState[0]; SQLCHAR Msg[SQL_MAX_MESSAGE_LENGTH], *ms = &Msg[0]; SQLWCHAR SqlStateW[6], *sqw = &SqlStateW[0]; SQLWCHAR MsgW[SQL_MAX_MESSAGE_LENGTH], *msw = &MsgW[0]; SQLINTEGER NativeError; SQLSMALLINT i=1, MsgLen; RETCODE ret; int j; printf("error number : %d\n", rc); while (SQL_SUCCEEDED(SQLGetDiagRec(type, handle, i++, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen)) ) { printf("state: %s error code: %d\n %s (%d)\n", SqlState, NativeError,Msg, MsgLen); } return; } int main(int argc, char **argv) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN rc; long len = SQL_NTS; SQLTCHAR kd[100]; if (argc == 2) DSNPrm = argv[1]; else if (argc == 4) { DSNPrm = argv[1]; DSNUid = argv[2]; DSNPwd = argv[3]; } else if ((argc == 3)||(argc > 4)) { printf("usage: [DSN [UserID Password]]\n"); return 1; } strcpy(kd, "1101010101"); SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); SQLConnect(hdbc, DSNPrm, SQL_NTS, DSNUid, SQL_NTS, DSNPwd, SQL_NTS); SQLAllocStmt(hdbc, &hstmt); rc = SQLExecDirect(hstmt, (SQLCHAR*)droptbl, SQL_NTS); CHECK_STMT(hstmt); rc = SQLExecDirect(hstmt, (SQLCHAR*)createtbl, SQL_NTS); CHECK_STMT(hstmt); SQLPrepare(hstmt, "INSERT INTO bbb VALUES (?)", SQL_NTS); SQLBindParameter(hstmt, (SQLUSMALLINT)1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_CHAR, 0, 0, &kd[0], 100, &len); rc = SQLExecute(hstmt); CHECK_STMT(hstmt); SQLFreeStmt(hstmt, SQL_DROP); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv); return 0; }