Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Соответствие
Представлена версия: соответствие стандартам ODBC 1.0: ISO 92
Сводка
SQLDataSources возвращает информацию о источнике данных. Эта функция реализуется только менеджером драйверов.
Syntax
SQLRETURN SQLDataSources(
SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction,
SQLCHAR * ServerName,
SQLSMALLINT BufferLength1,
SQLSMALLINT * NameLength1Ptr,
SQLCHAR * Description,
SQLSMALLINT BufferLength2,
SQLSMALLINT * NameLength2Ptr);
Arguments
EnvironmentHandle
[Ввод] Управление окружением.
Направление
[Ввод] Определяет, о каком источнике данных Driver Manager возвращает информацию. Может быть:
SQL_FETCH_NEXT (для получения следующего имени источника данных в списке), SQL_FETCH_FIRST (для извлечения из начала списка), SQL_FETCH_FIRST_USER (для получения первого пользовательского DSN) или SQL_FETCH_FIRST_SYSTEM (для получения первой системной DSN).
Когда Direction установлен на SQL_FETCH_FIRST, последующие вызовы SQLDataSources с Direction настроены на SQL_FETCH_NEXT возвращают как пользовательские, так и системные DSN. Когда Direction установлено на SQL_FETCH_FIRST_USER, все последующие вызовы SQLDataSources с Direction настроены на SQL_FETCH_NEXT возвращают только пользовательские DSN. Когда Direction установлен на SQL_FETCH_FIRST_SYSTEM, все последующие вызовы SQLDataSources с Direction настроены на SQL_FETCH_NEXT возвращают только системные DSN.
Имя сервера
[Выход] Указатель на буфер для возврата имени источника данных.
Если ServerName — NULL, NameLength1Ptr всё равно вернёт общее количество символов (за исключением символа null-termination для данных символов), доступных для возврата в буфере, на который указывает ServerName.
BufferLength1
[Ввод] Длина буфера *ServerName , в символах; Это не обязательно должно быть длиннее SQL_MAX_DSN_LENGTH плюс символ нулевой терминации.
NameLength1Ptr
[Выход] Указатель на буфер для возврата общего количества символов (за исключением символа null-termination), доступных для возврата в *ServerName. Если количество доступных для возврата символов превышает или равно BufferLength1, имя источника данных в *ServerName усекается до BufferLength1 минус длина символа нулевого завершения.
Описание
[Выход] Указатель на буфер для возврата описания драйвера, связанного с источником данных. Например, dBASE или SQL Server.
Если Description — NULL, NameLength2Ptr всё равно возвращает общее количество символов (за исключением символа null-termination для данных о символах), доступных для возврата в буфере, на который указывает Описание.
BufferLength2
[Ввод] Длина в символах буфера *Описания .
NameLength2Ptr
[Выход] Указатель на буфер, в который можно вернуть общее количество символов (исключая символ нулевой терминации), доступных для возврата в *Описании. Если количество символов, доступных для возврата, превышает или равно BufferLength2, описание драйвера в *Description усечено до BufferLength2 минус длина символа нулевой терминации.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR или SQL_INVALID_HANDLE.
Diagnostics
Когда SQLDataSources возвращает либо SQL_ERROR, либо SQL_SUCCESS_WITH_INFO, соответствующее значение SQLSTATE можно получить, вызвав SQLGetDiagRec с помощью HandleType SQL_HANDLE_ENV и HandleType of EnvironmentHandle. В следующей таблице перечислены значения SQLSTATE, обычно возвращаемые SQLDataSources , и каждое из них объясняется в контексте этой функции; обозначение «(DM)» предшествует описаниям SQLSTATE, возвращаемым менеджером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Общее предупреждение | (DM) Информационное сообщение для менеджера водителей. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 01004 | Строковые данные, усеченные справа | (DM) Буфер *ServerName был недостаточно велик, чтобы вернуть полное имя источника данных. Поэтому название было сокращено. Длина всего имени источника данных возвращается в *NameLength1Ptr. (Функция возвращает SQL_SUCCESS_WITH_INFO.) (DM) Буфер *Описание было недостаточно большим, чтобы вернуть полное описание драйвера. Поэтому описание было сокращено. Длина неусечённого описания источника данных возвращается в *NameLength2Ptr. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| HY000 | Общая ошибка | (DM) Произошла ошибка, для которой не было конкретного SQLSTATE и для которой не был определен специфический для реализации SQLSTATE. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину. |
| HY001 | Ошибка выделения памяти | (DM) Менеджер драйверов не смог выделить память, необходимую для выполнения или завершения функции. |
| HY010 | Ошибка последовательности функций | (DM) SQLExecute, SQLExecDirect или SQLMoreResults был вызван для ОператораHandle и возвращен SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров. |
| HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
| HY090 | Недопустимая длина строки или буфера | (DM) Значение, указанное для аргумента BufferLength1 , было меньше 0. (DM) Значение для аргумента BufferLength2 было меньше 0. |
| HY103 | Некорректный код поиска | (DM) Значение, указанное для направления аргумента, не равно SQL_FETCH_FIRST, SQL_FETCH_FIRST_USER, SQL_FETCH_FIRST_SYSTEM или SQL_FETCH_NEXT. |
| HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function. |
Comments
Поскольку SQLDataSources реализован в Driver Manager, он поддерживается для всех драйверов независимо от соответствия стандартам конкретного драйвера.
Приложение может многократно вызывать SQLDataSources для получения всех имён источников данных. Менеджер драйверов получает эту информацию из системных данных. Когда имена источников данных больше не остаются, менеджер драйверов возвращает SQL_NO_DATA. Если SQLDataSources вызывается с SQL_FETCH_NEXT сразу после возврата SQL_NO_DATA, он вернёт имя первого источника данных. Для получения информации о том, как приложение использует информацию, возвращаемую SQLDataSources, см. раздел «Выбор источника данных или драйвера».
Если SQL_FETCH_NEXT передаётся в SQLDataSources при первом вызове, оно вернёт первое имя источника данных.
Драйвер определяет, как имена источников данных сопоставляются с реальными источниками.
Связанные функции
| Сведения о | Смотри |
|---|---|
| Обнаружение и перечисление значений, необходимых для подключения к источнику данных | Функция SQLBrowseConnect |
| Подключение к источнику данных | Функция SQLConnect |
| Подключение к источнику данных с помощью строка подключения или диалогового окна | функция SQLDriverConnect |
| Возврат описания и атрибуты драйвера | Функция SQLDrivers |