Функция SQLDataSources

Соответствие
Представлена версия: соответствие стандартам 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