Udostępnij za pośrednictwem


IBCPSession::BCPColFmt (OLE DB)

Tworzy powiązanie między zmiennymi programu i SQL Server kolumny.

Składnia

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

Uwagi

BCPColFmt metoda jest używana do tworzenia powiązanie między polami pliku danych BCP i SQL Server kolumny.Ma długość, typ, terminator i długość prefiksu kolumna jako parametry i ustawia każdej z tych właściwości poszczególnych pól.

Jeśli użytkownik zdecyduje się tryb interakcyjny, Metoda ta jest wywoływana dwukrotnie; raz zestaw format kolumna zgodnie z wartościami domyślnymi (które są zgodne z typem kolumna serwera) i raz zestaw format zgodnie z typem kolumna wybór klient podczas tryb interakcyjny, dla każdej kolumna.

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

BCPColFmt metoda pozwala określić format pliku użytkownika kopie luzem.Dla kopiowanie masowe format zawiera następujące części:

  • Mapowanie pól pliku użytkownika do kolumny bazy danych.

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

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

  • Maksymalna długość danych pole plik użytkownika.

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

  • Długość opcjonalne zakończenie bajtowa sekwencja.

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 wywołań ustawienie niestandardowego formatu.Dla pozostałych dwóch połączeń, ustaw eUserDataType BCP_TYPE_DEFAULT, a zestaw cbIndicator, cbUserData, i cbUserDataTerm 0, BCP_VARIABLE_LENGTH i 0 odpowiednio.Ta procedura umożliwia skopiowanie wszystkich pięciu kolumn, trzy z niestandardowego formatu i dwóch z formatem domyślnym.

Ostrzeżenie

IBCPSession::BCPColumns metoda należy wywołać przed wszelkie wywołania BCPColFmt.Musisz wywołać BCPColFmt raz dla każdej kolumna w pliku użytkownika.Wywołanie BCPColFmt więcej niż raz dla dowolnego pliku użytkownika kolumna powoduje błąd.

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

UwagaIBCPSession::BCPWriteFmt funkcja może być używana do utrwalania specyfikacji formatu przez BCPColFmt.

Argumenty

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

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

    • Jeśli źródło kolumny nie jest decimal lub numeric, domyślna precyzja i Skala są używane.

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

  • cbIndicator[w]
    Długość pole prefiksu.Wartość domyślna to BCP_PREFIX_DEFAULT.Nieprawidłowa długość dla 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 to skutecznie zbiorczego kopiowania dużą wartość typu kolumn.

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

    zestaw cbUserData do BCP_LENGTH_NULL wskazuje, że wszystkie wartości w danych pliku pól są lub powinny być ustawiona na 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ć że wskaźnik długości i null jest generowany poprzedzającą danych na kopii z SQL Server, lub oczekiwanego wskaźnika w danych skopiowanych do 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 jest BCP_LENGTH_VARIABLE, system używa do określenia długości danych długość wskaźnika, jeśli jest obecna lub sekwencji terminatora.Jeśli są dostarczane wskaźnik długości i sekwencji terminatora kopiowanie masowe używa jeden, wyniki w ilości co najmniej kopiowane dane.Jeśli cbUserData BCP_LENGTH_VARIABLE danych jest typ jest SQL Server znak lub Typ binarny i jeśli wskaźnik długości ani sekwencji terminatora nie jest określony, system zwraca komunikat o błędzie.

    Jeśli cbUserData ma wartość 0 lub wartość dodatnią, system używa cbUserData jako maksymalna długość danych.Jednakże, jeżeli oprócz dodatnią cbUserData, pod warunkiem że długość sekwencji wskaźnik lub końcówkę, system Określa długość danych za pomocą metoda, wyniki w ilości co najmniej kopiowane dane.

    CbUserData wartość reprezentuje liczbę bajtów danych.Jeśli dane znak jest reprezentowany przez szerokości znaków Unicode, a następnie dodatnią cbUserData wartość parametru reprezentuje liczbę znaków pomnożona przez rozmiar w bajtach każdego znaku.

  • pbUserDataTerm[size_is] [w]
    Sekwencji terminatora stosowane do pole.Ten parametr jest użyteczny głównie dla znaku, typy danych, ponieważ wszystkie inne typy są stałej długości, lub w przypadek danych binarnych, wymagają wskaźnika długości dokładne rejestrowanie liczby bajtów obecnych.

    Aby uniknąć kończące wyodrębnione dane lub aby wskazać, że dane w pliku użytkownika 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 (takich jak terminator wskaźnik długości, lub terminator i długość maksymalna kolumna), kopiowanie masowe wybiera jeden z wyniki w ilości co najmniej kopiowane dane.

    kopiowanie masowe API wykonuje konwersję znaków Unicode do MBCS wymagane.Należy zachować ostrożność w ciąg bajt terminator i długość ciąg bajt były zestaw poprawnie.

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

  • idxServerCol[w]
    Numerem porządkowym kolumna w tabela bazy danych.Pierwszy kolumna jest numerem 1.Pozycja porządkowa kolumna jest zgłaszane przez IColumnsInfo::GetColumnInfo lub podobnych metod.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 przed wywołaniem tej metoda nie wywołano metoda.

  • E_INVALIDARG
    Nieprawidłowy argument.

  • BŁĄD E_OUTOFMEMORY
    Błąd braku pamięci.

Zobacz także

Koncepcje

Inne zasoby