Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zgodność
Wersja wprowadzona: Zgodność ze standardami ODBC 1.0: ISO 92
Podsumowanie
SQLDataSources zwraca informacje o źródle danych. Funkcja ta jest realizowana wyłącznie przez Driver Manager.
Syntax
SQLRETURN SQLDataSources(
SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction,
SQLCHAR * ServerName,
SQLSMALLINT BufferLength1,
SQLSMALLINT * NameLength1Ptr,
SQLCHAR * Description,
SQLSMALLINT BufferLength2,
SQLSMALLINT * NameLength2Ptr);
Arguments
EnvironmentHandle
[Input] Zarządzanie środowiskiem.
Kierunek
[Input] Określa, o jakim źródle danych Driver Manager zwraca informacje. Może to być:
SQL_FETCH_NEXT (pobieranie następnej nazwy źródła danych na liście), SQL_FETCH_FIRST (pobieranie z początku listy), SQL_FETCH_FIRST_USER (pobieranie pierwszego DSN użytkownika) lub SQL_FETCH_FIRST_SYSTEM (pobieranie pierwszego DSN systemu).
Gdy Direction jest ustawiony na SQL_FETCH_FIRST, kolejne wywołania SQLDataSources z ustawionym kierunkiem na SQL_FETCH_NEXT zwracają zarówno użytkownika, jak i systemowego DSN. Gdy Direction jest ustawiony na SQL_FETCH_FIRST_USER, wszystkie kolejne wywołania SQLDataSources z ustawionym kierunkiem na SQL_FETCH_NEXT zwracają jedynie DSN użytkownika. Gdy Direction jest ustawiony na SQL_FETCH_FIRST_SYSTEM, wszystkie kolejne wywołania do SQLDataSources z ustawieniem Direction na SQL_FETCH_NEXT zwracają wyłącznie systemowe DSN.
Nazwa serwera
[Wyjście] Wskaźnik do bufora, w którym zwraca nazwę źródła danych.
Jeśli ServerName jest NULL, NameLength1Ptr nadal zwraca łączną liczbę znaków (z wyłączeniem znaku zerowego zakończenia dla danych znaków) dostępnych do zwrócenia w buforze wskazanym przez ServerName.
BufferLength1
[Input] Długość bufora *ServerName , w znakach; nie musi to być dłuższe niż SQL_MAX_DSN_LENGTH plus znak zakończenia zerowego.
NameLength1Ptr
[Wyjście] Wskaźnik do bufora, w którym można zwrócić łączną liczbę znaków (z wyłączeniem znaku zakończenia zerowego) dostępnych do zwrócenia w *ServerName. Jeśli liczba znaków dostępnych do zwracania jest większa lub równa BufferLength1, nazwa źródła danych w *ServerName jest skracana do BufferLength1 minus długość znaku zakończenia zerowego.
Description
[Wyjście] Wskaźnik do bufora, w którym zwraca się opis sterownika powiązanego ze źródłem danych. Na przykład dBASE lub SQL Server.
Jeśli Opis jest NULL, NameLength2Ptr nadal zwraca łączną liczbę znaków (z wyłączeniem znaku zakończenia zera dla danych znaków) dostępnych do zwrócenia w buforze wskazanym przez Opis.
BufferLength2
[Input] Długość w znakach bufora *Opis .
NameLength2Ptr
[Wyjście] Wskaźnik do bufora, w którym można zwrócić łączną liczbę znaków (z wyłączeniem znaku zakończenia zerowego) dostępnych do zwrócenia w *Opis. Jeśli liczba znaków dostępnych do zwracania jest większa lub równa BufferLength2, opis sterownika w *Description zostaje skrócony do BufferLength2 minus długość znaku zakończenia zerowego.
Zwroty
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR lub SQL_INVALID_HANDLE.
Diagnostyka
Gdy SQLDataSources zwraca SQL_ERROR lub SQL_SUCCESS_WITH_INFO, powiązaną wartość SQLSTATE można uzyskać, wywołując SQLGetDiagRec z HandleType SQL_HANDLE_ENV oraz HandlemEnvironmentHandle. Poniższa tabela przedstawia wartości SQLSTATE typowo zwracane przez SQLDataSources i wyjaśnia każdą z nich w kontekście tej funkcji; notacja "(DM)" poprzedza opisy stanów SQL zwracanych przez Menedżera Sterowników. Kod zwracany skojarzony z każdą wartością SQLSTATE jest SQL_ERROR, chyba że określono inaczej.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Ostrzeżenie ogólne | (DM) Komunikat informacyjny specyficzny dla Driver Managera. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). |
| 01004 | Dane ciągów, prawe obcięte | (DM) Bufor *ServerName nie był wystarczająco duży, aby zwrócić pełną nazwę źródła danych. W związku z tym nazwa została skrócona. Długość całej nazwy źródła danych jest zwracana w *NameLength1Ptr. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). (DM) Bufor *Opis nie był wystarczająco duży, aby zwrócić pełny opis sterownika. W związku z tym opis został skrócony. Długość nieobciętego opisu źródła danych jest zwracana w *NameLength2Ptr. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). |
| HY000 | Błąd ogólny | (DM) Wystąpił błąd, dla którego nie było konkretnego SQLSTATE i dla którego nie zdefiniowano specyficznego dla implementacji SQLSTATE. Komunikat o błędzie zwrócony przez element SQLGetDiagRec w buforze *MessageText opisuje błąd i jego przyczynę. |
| HY001 | Błąd alokacji pamięci | (DM) Driver Manager nie był w stanie przydzielić pamięci potrzebnej do wsparcia wykonania lub zakończenia funkcji. |
| HY010 | Błąd sekwencji funkcji | (DM) SqlExecute, SQLExecDirect lub SQLMoreResults została wywołana dla instrukcji StatementHandle i zwrócona SQL_PARAM_DATA_AVAILABLE. Ta funkcja została wywołana przed pobraniem danych dla wszystkich parametrów przesyłanych strumieniowo. |
| HY013 | Błąd zarządzania pamięcią | Nie można przetworzyć wywołania funkcji, ponieważ nie można uzyskać dostępu do bazowych obiektów pamięci, prawdopodobnie z powodu niskich warunków pamięci. |
| HY090 | Nieprawidłowa długość ciągu lub buforu | (DM) Wartość podania argumentu BufferLength1 była mniejsza niż 0. (DM) Wartość podała dla argumentu BufferLength2 mniejsza niż 0. |
| HY103 | Nieprawidłowy kod odzyskiwania | (DM) Wartość określona dla argumentu Kierunek nie była równa SQL_FETCH_FIRST, SQL_FETCH_FIRST_USER, SQL_FETCH_FIRST_SYSTEM ani SQL_FETCH_NEXT. |
| HY117 | Połączenie jest zawieszone z powodu nieznanego stanu transakcji. Dozwolone są tylko funkcje rozłączania i tylko do odczytu. | (DM) Aby uzyskać więcej informacji na temat stanu wstrzymania, zobacz SQLEndTran, funkcja. |
Comments
Ponieważ SQLDataSources jest zaimplementowany w Driver Managerze, jest obsługiwany dla wszystkich sterowników niezależnie od zgodności danego sterownika ze standardami.
Aplikacja może wielokrotnie wywoływać SQLDataSources , aby pobrać wszystkie nazwy źródeł danych. Driver Manager pobiera te informacje z danych systemowych. Gdy nie ma już nazw źródeł danych, Driver Manager zwraca SQL_NO_DATA. Jeśli SQLDataSources zostanie wywołany z SQL_FETCH_NEXT zaraz po zwróceniu SQL_NO_DATA, zwróci pierwszą nazwę źródła danych. Aby uzyskać informacje o tym, jak aplikacja wykorzystuje informacje zwracane przez SQLDataSources, zobacz Wybór źródła danych lub sterownika.
Jeśli SQL_FETCH_NEXT zostanie przekazane do SQLDataSources przy pierwszym wywołaniu, zwróci nazwę pierwszego źródła danych.
Sterownik określa, jak nazwy źródeł danych są mapowane na rzeczywiste źródła danych.
Powiązane funkcje
| Aby uzyskać informacje o | Zobacz |
|---|---|
| Odkrywanie i wypisywanie wartości wymaganych do połączenia ze źródłem danych | Funkcja SQLBrowseConnect |
| Nawiązywanie połączenia ze źródłem danych | Funkcja SQLConnect |
| Łączenie się ze źródłem danych za pomocą parametry połączenia lub okna dialogowego | funkcja SQLDriverConnect |
| Zwracające opisy i atrybuty kierowców | Funkcja SQLDrivers |