Udostępnij przez


Zmiany zachowania

Zmiany behawioralne to te zmiany, dla których składnia interfejsu pozostaje taka sama, ale semantyka uległa zmianie. W przypadku tych zmian funkcje używane w odBC 2. x zachowuje się inaczej niż ta sama funkcja w odBC 3. x.

Czy aplikacja wykazuje ODBC 2. x zachowanie lub ODBC 3. X zachowanie jest określane przez atrybut środowiska SQL_ATTR_ODBC_VERSION. Ta wartość 32-bitowa jest ustawiona na SQL_OV_ODBC2, aby wykazywać zachowanie ODBC 2. x, i SQL_OV_ODBC3, aby wykazywać zachowanie ODBC 3. x.

Atrybut środowiska SQL_ATTR_ODBC_VERSION jest ustawiany przez wywołanie metody SQLSetEnvAttr. Gdy aplikacja wywołuje metodę SQLAllocHandle w celu przydzielenia dojścia środowiska, musi natychmiast wywołać metodę SQLSetEnvAttr , aby ustawić zachowanie, które wykazuje. W związku z tym istnieje nowy stan środowiska, aby opisać uchwyt środowiska w stanie przydzielonym, ale bez wersji. Aby uzyskać więcej informacji, zobacz Dodatek B: Tabele przejść stanu ODBC.

Aplikacja stwierdza, jakie zachowanie wykazuje za pomocą atrybutu środowiska SQL_ATTR_ODBC_VERSION, ale atrybut nie ma wpływu na połączenie aplikacji z ODBC 2. x lub ODBC 3. x sterownik. Aplikacja ODBC 3.x może nawiązać połączenie do sterownika ODBC 2.x lub 3.x, bez względu na ustawienia atrybutu środowiskowego.

ODBC 3. Aplikacje x nigdy nie powinny wywoływać sqlAllocEnv. W związku z tym, jeśli menedżer sterowników odbiera wywołanie SQLAllocEnv, rozpoznaje aplikację jako aplikację ODBC 2.x.

Atrybut SQL_ATTR_ODBC_VERSION ma wpływ na trzy różne aspekty zachowania sterownika ODBC 3.x:

  • SQLSTATE

  • Typy danych dla znacznika daty, godziny i sygnatury czasowej

  • Argument CatalogName w SQLTables akceptuje wzorce wyszukiwania w ODBC 3.x, ale nie w ODBC 2.x

Ustawienie atrybutu środowiska SQL_ATTR_ODBC_VERSION nie ma wpływu na sqlSetParam lub SQLBindParam. Na ten bit nie ma wpływu również atrybut SQLColAttribute. Mimo że funkcja SQLColAttribute zwraca atrybuty, których dotyczy wersja ODBC (typ daty, precyzja, skala i długość), zamierzone zachowanie jest określane przez wartość argumentu FieldIdentifier . Gdy parametr FieldIdentifier jest równy SQL_DESC_TYPE, funkcja SQLColAttribute zwraca wartość ODBC 3. x kody daty, godziny i znacznika czasu; gdy parametr FieldIdentifier jest równy SQL_COLUMN_TYPE, funkcja SQLColAttribute zwraca wartość ODBC 2. x kody daty, godziny i znacznika czasu.

Ta sekcja zawiera następujące tematy.