static SQLRETURN MNDBSetConnectOption(ODBCDbc *dbc, SQLUSMALLINT Option, SQLULEN ValuePtr) { /* use mapping as described in ODBC 3 SDK Help file */ switch (Option) { /* connection attributes (ODBC 1 and 2 only) */ case SQL_ACCESS_MODE: case SQL_AUTOCOMMIT: case SQL_LOGIN_TIMEOUT: case SQL_ODBC_CURSORS: case SQL_OPT_TRACE: case SQL_PACKET_SIZE: case SQL_TRANSLATE_OPTION: case SQL_TXN_ISOLATION: /* 32 bit integer argument */ return MNDBSetConnectAttr(dbc, Option, (SQLPOINTER) (uintptr_t) ValuePtr, 0); case SQL_QUIET_MODE: /* 32/64 bit integer argument */ return MNDBSetConnectAttr(dbc, Option, (SQLPOINTER) (uintptr_t) ValuePtr, 0); case SQL_CURRENT_QUALIFIER: case SQL_OPT_TRACEFILE: case SQL_TRANSLATE_DLL: /* null terminated string argument */ return MNDBSetConnectAttr(dbc, Option, (SQLPOINTER) (uintptr_t) ValuePtr, SQL_NTS); default: /* other options (e.g. ODBC 3) are NOT valid */ /* Invalid attribute/option identifier */ addDbcError(dbc, "HY092", NULL, 0); break; } return SQL_ERROR; }
SQLRETURN SQL_API SQLSetConnectAttrW(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength) { ODBCDbc *dbc = (ODBCDbc *) ConnectionHandle; SQLPOINTER ptr; SQLINTEGER n; SQLRETURN rc; #ifdef ODBCDEBUG ODBCLOG("SQLSetConnectAttrW " PTRFMT " %s " PTRFMT " %d\n", PTRFMTCAST ConnectionHandle, translateConnectAttribute(Attribute), PTRFMTCAST ValuePtr, (int) StringLength); #endif if (!isValidDbc(dbc)) return SQL_INVALID_HANDLE; clearDbcErrors(dbc); switch (Attribute) { case SQL_ATTR_CURRENT_CATALOG: case SQL_ATTR_TRACEFILE: case SQL_ATTR_TRANSLATE_LIB: if (StringLength > 0) /* convert from bytes to characters */ StringLength /= 2; fixWcharIn(ValuePtr, StringLength, SQLCHAR, ptr, addDbcError, dbc, return SQL_ERROR); n = SQL_NTS; break; default: ptr = ValuePtr; n = StringLength; break; } rc = MNDBSetConnectAttr(dbc, Attribute, ptr, n); if (ptr && ptr != ValuePtr) free(ptr); return rc; }
SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength) { #ifdef ODBCDEBUG ODBCLOG("SQLSetConnectAttr " PTRFMT " %s " PTRFMT " %d\n", PTRFMTCAST ConnectionHandle, translateConnectAttribute(Attribute), PTRFMTCAST ValuePtr, (int) StringLength); #endif if (!isValidDbc((ODBCDbc *) ConnectionHandle)) return SQL_INVALID_HANDLE; clearDbcErrors((ODBCDbc *) ConnectionHandle); return MNDBSetConnectAttr((ODBCDbc *) ConnectionHandle, Attribute, ValuePtr, StringLength); }