Mapowania typów danych (ODBC)
SQL Server Mapy sterownik ODBC macierzystym klienta SQL Server typy danych języka SQL do typów danych ODBC SQL.W poniższych sekcjach omówiono SQL Server typy danych ODBC SQL i typy danych języka SQL które one mapy.Również omawiać typy danych języka SQL ODBC i ich odpowiednie typy danych ODBC C i obsługiwane i domyślnych konwersji.
Ostrzeżenie
The SQL Server timestamp data type maps to the SQL_BINARY or SQL_VARBINARY ODBC data type because the values in timestamp columns are not datetime values, but binary(8) or varbinary(8) values that indicate the sequence of SQL Server activity on the row.Jeśli SQL Server sterownik ODBC macierzystym klienta napotyka wartość SQL_C_WCHAR (Unicode), który jest nieparzysta liczba bajtów, obcinane końcowego bajtu nieparzysta.
Zajmowanie się sql_variant typ danych ODBC
Sql_variant kolumna Typ danych może zawierać dowolne typy danych w SQL Server z wyjątkiem dużych obiektów (obiektów LOB), takich jak tekstu, ntext, i obrazu.Na przykład kolumna może zawierać smallint wartości niektóre wiersze pływaka wartości dla innych wierszy i char/nchar wartości w pozostałej.
Sql_variant typ danych jest podobne do wariantu typ danych w programie Microsoft Visual Basic ®.
Pobieranie danych z serwera
ODBC nie ma pojęcia wariantu typu ograniczenie użytkowania sql_variant typ danych ze sterownika ODBC w SQL Server.W SQL Server, jeśli powiązanie jest określony, sql_variant typ danych musi być powiązany z jednym z typów udokumentowanych danych ODBC.SQL_CA_SS_VARIANT_TYPE, nowy atrybut specyficzne dla SQL Server sterownik ODBC macierzysty klient zwraca typ danych wystąpienie w sql_variant kolumna do użytkownika.
Jeżeli nie określono żadnych powiązanie, Procedura SQLGetData funkcja może być używana do określenia typu danych wystąpienie w sql_variant kolumna.
Aby pobrać sql_variant danych, wykonaj następujące kroki.
Wywołanie SQLFetch do pozycji do wiersza pobrany.
Wywołanie Procedura SQLGetData, określając typ i długość danych 0 SQL_C_BINARY.Wymusza sterownik odczytać sql_variant nagłówka.Nagłówek zawiera typ danych to wystąpienie w sql_variant kolumna.Procedura SQLGetData zwraca rozmiar (w bajtach) wartość.
Wywołanie SQLColAttribute przez określenie SQL_CA_SS_VARIANT_TYPE jako jego wartość atrybut.Ta funkcja zwraca typ danych c wystąpienie w sql_variant kolumna do klient.
Oto segment kodu przedstawiający powyższych kroków.
while ((retcode = SQLFetch (hstmt))==SQL_SUCCESS)
{
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
{
SQLError (NULL, NULL, hstmt, NULL,
&lNativeError,szError,MAX_DATA,&sReturned);
printf_s ("%s\n",szError);
goto Exit;
}
retcode = SQLGetData (hstmt, 1, SQL_C_BINARY,
pBuff,0,&Indicator);//Figure out the length
if (retcode != SQL_SUCCESS_WITH_INFO && retcode != SQL_SUCCESS)
{
SQLError (NULL, NULL, hstmt, NULL, &lNativeError,
szError,MAX_DATA,&sReturned);
printf_s ("%s\n",szError);
goto Exit;
}
printf_s ("Byte length : %d ",Indicator); //Print out the byte length
int iValue = 0;
retcode = SQLColAttribute (hstmt, 1, SQL_CA_SS_VARIANT_TYPE, NULL,
NULL,NULL,&iValue); //Figure out the type
printf_s ("Sub type = %d ",iValue);//Print the type, the return is C_type of the column]
// Set up a new binding or do the SQLGetData on that column with
// the appropriate type
}
Jeśli użytkownik tworzy powiązanie za pomocą Procedura SQLBindCol, sterownik odczytów metadane i danych.Sterownik następnie konwertuje dane odpowiedniego typu ODBC, określone w powiązanie.
Wysyłanie danych do serwera
SQL_SS_VARIANT, nowy typ danych dla SQL Server sterownik ODBC macierzystym klienta jest używany dla danych wysyłanych do sql_variant kolumna.Podczas wysyłania danych do serwera przy użyciu parametrów (na przykład WSTAWIĆ do Nazwa_tabeli wartości (?,?)), SQLBindParameter jest używana do określania informacji o parametrach typu c i odpowiadające im SQL Server typu. SQL Server Sterownik ODBC macierzystym klienta będzie przekonwertować typu c danych do jednego z właściwych sql_variant podtypów.