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.