Udostępnij za pośrednictwem


Mapowanie typów danych (ODBC)

The SQL Server Native klient ODBC driver maps SQL Server SQL data types to ODBC SQL data types. W poniższych sekcjach omówiono SQL Server Typy danych SQL i typy danych ODBC SQL, do którego będą mapować. Typy danych ODBC SQL i ich odpowiednie typy danych ODBC, C i obsługiwanych one również i domyślne podczas konwersji.

Uwaga

The SQL Servertimestamp 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 Macierzysty sterownik ODBC klient napotyka wartość SQL_C_WCHAR (Unicode), która jest nieparzysta liczba bajtów, końcowy bajt nieparzystym zostanie obcięta do liczby całkowitej.

Zajmowanie sql_variant typ danych w ODBC

The sql_variant data type kolumna can contain any of the data types in SQL Server except large objects (LOBs), such as text, ntext, and image.Na przykład kolumna może zawierać smallint Niektóre wiersze, wartościzmiennoprzecinkowe wartości innych wierszach i CHAR/nchar wartości w pozostałej.

The sql_variant data type is similar to the Variant data type in Microsoft Visual Basic®.

Pobieranie danych z serwera

ODBC nie ma pojęcia wariantu typu ograniczenie stosowania sql_variant Typ danych sterownika ODBC w SQL Server. W SQL Server, jeśli określono wiązanie, sql_variant typ danych musi być powiązany z jednym z udokumentowanymi typów danych ODBC.SQL_CA_SS_VARIANT_TYPE, nowy atrybut specyficzny dla SQL Server Macierzysty sterownik ODBC klient, funkcja zwraca typ danych wystąpienie w sql_variant kolumna dla użytkownika.

Jeśli wiązanie nie jest określony, SQLGetData funkcja może być używana do określenia typu danych wystąpienie w sql_variant kolumna.

W celu pobrania sql_variant danych wykonaj następujące kroki.

  1. Wywołanie SQLFetch , aby umieścić w wierszu pobierane.

  2. Wywołanie SQLGetData, określając SQL_C_BINARY dla typu i 0 w przypadku długość danych.To zmusza sterownika odczytać sql_variant nagłówka.Nagłówek zawiera typ danych to wystąpienie w sql_variant kolumna.SQLGetData zwróci rozmiar (w bajtach) wartości.

  3. Wywołanie SQLColAttribute określićSQL_CA_SS_VARIANT_TYPE jako wartość atrybut.Ta funkcja zwraca typ danych C wystąpienie w sql_variant kolumna do klient.

W tym polu jest segmentem kod 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 przy użyciu wiązanie SQLBindCol, sterownik odczytów metadane i danych.Sterownik następnie konwertuje dane odpowiedniego typu ODBC, określona w wiązaniu.

Wysyłanie danych do serwera

SQL_SS_VARIANT, specyficzne dla nowy typ danychSQL Server Macierzysty sterownik ODBC klient, jest używana dla danych wysyłanych do sql_variant kolumna.Podczas wysyłania danych do serwera przy użyciu parametrów (na przykład, INSERT INTO TableName VALUES (?,?)), SQLBindParameter Pozwala określić informacje o parametrach, włącznie z rodzajem C i odpowiadające im SQL Server Typ. The SQL Server Native klient ODBC driver will convert the C data type to one of the appropriate sql_variant subtypes.

See Also

Concepts