Udostępnij przez


IBCPSession::BCPColFmt (OLE DB)

Tworzy wiązanie między zmiennymi program i SQL Server kolumny.

HRESULT BCPColFmt( 
      DBORDINAL idxUserDataCol,
      int eUserDataType,
      int cbIndicator,
      int cbUserData,
      BYTE *pbUserDataTerm,
      int cbUserDataTerm,
      DBORDINAL idxServerCol);

Remarks

The BCPColFmt metoda is used to create a wiązanie between BCP data file fields and SQL Server columns. Trwa długości, typ, terminator i długość prefiksu kolumna jako parametry i ustawia każdej z tych właściwości dla poszczególnych pól.

Jeśli użytkownik zdecyduje się na tryb interakcyjny, ta metoda jest wywoływana dwukrotnie; raz do zestaw format kolumna zgodnie z wartościami domyślnymi (które są zgodne z typem kolumna serwera), a raz do zestaw formatu na podstawie typu kolumna wybranego klient podczas tryb interakcyjny, dla każdej kolumna.

W trybie nieinterakcyjnym, go jest wywoływana tylko raz na kolumna zestaw typu każdej kolumna oraz aby znak lub typu macierzystego zestaw terminatory wierszy i kolumn.

The BCPColFmt metoda allows you to specify the user-file format for bulk copies.Dla kopiowanie masowe format zawiera następujące części:

  • Mapowanie pól plik użytkownika do kolumn bazy danych.

  • Typ danych każdego pole pliku użytkownika.

  • Długość opcjonalne wskaźnik dla każdego pole.

  • Maksymalna długość danych w jednym polu plik użytkownika.

  • Opcjonalne zakończenie bajt sekwencję dla każdego pole.

  • Długość opcjonalne zakończenie sekwencji bajtów.

Każde wywołanie BCPColFmt Określa format dla jednego pole pliku użytkownika.Na przykład aby zmienić ustawienia domyślne dla trzech pól w pliku danych pole pięciu użytkowników, najpierw wywołać BCPColumns(5), a następnie wywołać BCPColFmt pięć razy z trzema tych wywołań ustawienie format niestandardowy.Dla pozostałych dwóch połączeń Ustawianie eUserDataType Aby BCP_TYPE_DEFAULT, ustawianie cbIndicator, cbUserData, a cbUserDataTerm 0, BCP_VARIABLE_LENGTH i odpowiednio. Procedura ta kopiuje wszystkie pięć kolumn trzy formatowi niestandardowych i dwoma w formacie domyślnym.

Uwaga

The IBCPSession::BCPColumns metoda must be called before any calls to BCPColFmt.Należy wywołać BCPColFmt tylko jeden raz dla każdej kolumna w pliku użytkownika.Wywołanie BCPColFmt więcej niż jeden raz dla każdej kolumna plik użytkownika powoduje błąd.

Nie trzeba skopiować wszystkie dane w pliku użytkownika SQL Server Tabela. Aby pominąć kolumna, należy określić format danych dla kolumna, ustawienie parametru idxServerCol na 0.Aby pominąć pole, należy wszystkie informacje dotyczące metoda do poprawnego działania.

Uwaga   The IBCPSession::BCPWriteFmt funkcja może być używana do utrzymują specyfikację formatu pozwalającego przez BCPColFmt.

Argumenty

  • idxUserDataCol[w]
    Indeks pole pliku danych przez użytkownika.

  • eUserDataType[w]
    Typ danych pole w pliku danych przez użytkownika.Dostępne typy danych są wymienione w SQL Server Macierzysty klient pliku nagłówka (sqlncli.h) w formacie BCP_TYPE_XXX, na przykład BCP_TYPE_SQLINT4. Jeżeli określono wartość BCP_TYPE_DEFAULT, dostawca próbuje korzystać z tego samego typu jak tabela lub wyświetlenie typu kolumna.Dla operacji kopiowania zbiorczej z SQL Server i w pliku po eUserDataType argument jest BCP_TYPE_SQLDECIMAL lub BCP_TYPE_SQLNUMERIC:

    • Jeśli urządzenie źródłowe kolumna nie jest dziesiętną lub liczbowe, używane są domyślne precyzji i skali.

    • Jeśli kolumna źródłowa jest dziesiętną lub numeryczne, precyzji i skali kolumny źródłowej są używane.

  • cbIndicator[w]
    Prefiks długości pole.Wartość domyślna to BCP_PREFIX_DEFAULT.Prawidłowej długości prefiksu są 0, 1, 2, 4 i 8.Rozmiar prefiks 8 jest najczęściej używane do wskazania, że pole jest pakietowego.Służy ona do efektywnego zbiorczego kopiowania dużą wartość kolumn typu.

  • cbUserData[w]
    Maksymalna długość, w bajtach, to pole danych w pliku użytkownika, z wyłączeniem długość długość wskaźnik lub terminator.

    zestaw ting cbUserData do BCP_LENGTH_NULL wskazuje, że wszystkie wartości w danych pliku pól jest lub powinno być zestaw wartości null.Ustawienie cbUserData do BCP_LENGTH_VARIABLE wskazuje, że system powinien określić długość danych dla każdego pole.W przypadku niektórych pól może to oznaczać czy wskaźnik null/długości zostanie wygenerowany poprzedzającą danych w kopii z SQL Server, lub które wskaźnika jest kopiowane do danych SQL Server.

    Dla SQL Server znak i typy danych binarnych cbUserData może być BCP_LENGTH_VARIABLE, BCP_LENGTH_NULL, 0 lub niektóre wartość dodatnią.Jeśli cbUserData BCP_LENGTH_VARIABLE, system używa wskaźnik długości, jeśli jest obecna lub sekwencji terminator do określenia długości danych.Jeśli są dostarczane i wskaźnik długości sekwencji terminator kopiowanie masowe używa jeden, wyniki w najmniejszą ilość danych, w której są kopiowane.Jeśli cbUserData BCP_LENGTH_VARIABLE, typ danych jest SQL Server znak lub Typ binarny, i jeśli określono sekwencję terminator ani wskaźnik długość, system zwróci komunikat o błędzie.

    Jeśli cbUserData jest równa 0 lub wartość dodatnią, system używa cbUserData jako dane maksymalną długość.Niemniej jednak, jeśli oprócz dodatnia cbUserData, podano sekwencji wskaźnik lub terminator długość, system Określa długość danych przy użyciu metoda, wyniki w najmniejszą ilość danych, w której są kopiowane.

    The cbUserData value represents the count of bytes of data.Jeśli dane znak jest reprezentowany przez szerokości znaków Unicode, a następnie dodatnia cbUserData parametr wartość reprezentuje liczbę znaków pomnożona przez rozmiar w bajtach) każdego znaku.

  • pbUserDataTerm[size_is][w]
    Sekwencja terminator ma być używany dla tego pole.Ten parametr jest przydatne głównie dla znaków typów danych, ponieważ wszystkie inne typy o stałej długości, lub, w odniesieniu do danych binarnych, wymagają wskaźnika o długości do dokładnie rejestrowana liczba bajtów obecnych.

    Aby uniknąć kończące wyodrębnione dane lub do wskazania, że dane w pliku użytkownik nie jest zakończone, zestaw tego parametru na wartość NULL.

    Jeżeli zastosowano więcej niż jeden sposób określenia długości kolumna pliku użytkownika (na przykład terminator i wskaźnik długości, lub terminator i długość maksymalna kolumna), kopiowanie masowe wybiera ten, który powoduje najmniejszą ilość danych, w której są kopiowane.

    Interfejsu API kopiowanie masowe dokonuje konwersji znaków Unicode do MBCS zgodnie z wymaganiami.Należy uważać, aby zapewnić, że zarówno ciąg bajt terminator i długość ciągu bajt zestaw poprawnie.

  • cbUserDataTerm[w]
    Długość, w bajtach, sekwencja terminator ma być używany dla tej kolumna.Jeśli terminator nie jest obecna lub żądane w danych, ustaw tę wartość na 0.

  • idxServerCol[w]
    Liczba porządkowa pozycję kolumna w tabela bazy danych.Pierwsza liczba kolumn wynosi 1.Liczba porządkowa położenie kolumna jest zgłaszane przez IColumnsInfo::GetColumnInfo lub podobnej metody.Jeśli ta wartość jest równa 0, kopiowanie masowe ignoruje pole w pliku danych.

Wartości kodów powrotnych

  • S_OK
    metoda powiodło się.

  • E_FAIL
    Wystąpił błąd specyficzny dla dostawca, do użytku szczegółowe informacje ISQLServerErrorInfo interfejs.

  • E_UNEXPECTED
    Wywołanie metoda było nieoczekiwane.Na przykład IBCPSession::BCPInit metoda nie została wywołana przed wywołaniem tej metody.

  • E_INVALIDARG
    Nieprawidłowy argument.

  • E_OUTOFMEMORY
    Z błąd pamięci.