Эта глава обеспечивает справочный материал для API Connector/ODBC, показывая поддержанные функции и методы, поддерживаемые типы столбца MySQL и соответствующий родной тип в Connector/ODBC и коды ошибок, возвращенные Connector/ODBC, когда ошибка происходит.
Этот раздел суммирует установленный порядок ODBC, категоризированный функциональностью.
Для полной справки по API ODBC, пожалуйста, обратитесь к ODBC Programmer's Reference на http://msdn.microsoft.com/en-us/library/ms714177.aspx.
Приложение может вызвать функцию SQLGetInfo
,
чтобы получить информацию о соответствии Connector/ODBC.
Чтобы получить информацию о поддержке определенной функции в драйвере, надо
вызвать функцию SQLGetFunctions
.
Для обратной совместимости Connector/ODBC поддерживает все устаревшие функции.
Следующие таблицы приводят вызовы API Connector/ODBC, сгруппированные задачей:
Таблица 7.1. Вызовы ODBC API для соединения с источником данных
Имя | Поддержка Connector/ODBC? | Стандарт | Цель |
---|---|---|---|
SQLAllocHandle |
Да | ISO 92 | Получает окружающую среду, связь, запрос или дескриптор. |
SQLConnect |
Да | ISO 92 | Соединяется с драйвером, определенным именем источника данных, идентификатором пользователя и паролем. |
SQLDriverConnect |
Да | ODBC | Соединяется с драйвером, определенным строкой подключения или просит, чтобы менеджер драйверов и драйвер показали диалоговые окна связи для пользователя. |
SQLAllocEnv |
Да | Устаревшая | Получает дескриптор окружающей среды из драйвера. |
SQLAllocConnect |
Да | Устаревшая | Получает дескриптор соединения. |
Таблица 7.2. Вызовы ODBC API для получения информации о драйвере и источнике данных
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLDataSources |
Нет | ISO 92 | Возвращает список доступных источников данных, обработанных менеджером драйверов. |
SQLDrivers |
Нет | ODBC | Возвращает список установленных драйверов и их признаков, обработанных менеджером драйверов. |
SQLGetInfo |
Да | ISO 92 | Информация об определенном драйвере и источнике данных. |
SQLGetFunctions |
Да | ISO 92 | Информация о поддерживаемых функциях драйвера. |
SQLGetTypeInfo |
Да | ISO 92 | Информация о поддерживаемых типах данных. |
Таблица 7.3. Вызовы ODBC API для работы с атрибутами драйвера
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLSetConnectAttr |
Да | ISO 92 | Устанавливает атрибуты соединения. |
SQLGetConnectAttr |
Да | ISO 92 | Возвращает значение атрибута соединения. |
SQLSetConnectOption |
Да | Устаревшая | Устанавливает атрибуты соединения. |
SQLGetConnectOption |
Да | Устаревшая | Возвращает значение атрибута соединения. |
SQLSetEnvAttr |
Да | ISO 92 | Устанавливает атрибуты окружения. |
SQLGetEnvAttr |
Да | ISO 92 | Возвращает значение атрибута окружения. |
SQLSetStmtAttr |
Да | ISO 92 | Устанавливает атрибуты запроса. |
SQLGetStmtAttr |
Да | ISO 92 | Возвращает значение атрибута запроса. |
SQLSetStmtOption |
Да | Устаревшая | Устанавливает атрибуты запроса. |
SQLGetStmtOption |
Да | Устаревшая | Возвращает значение атрибута запроса. |
Таблица 7.4. Вызовы ODBC API для подготовки запросов SQL
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLAllocStmt |
Да | Устаревшая | Размещает обработчик запроса. |
SQLPrepare |
Да | ISO 92 | Готовит SQL-оператор к более позднему выполнению. |
SQLBindParameter |
Да | ODBC | Назначает хранение для параметра в SQL-операторе. Connector/ODBC 5.2
добавляет поддержку параметров out и
inout через спецификаторы типа
SQL_PARAM_OUTPUT и
SQL_PARAM_INPUT_OUTPUT .
Параметры Out и inout
не поддерживаются для столбцов LONGTEXT и
LONGBLOB . |
SQLGetCursorName |
Да | ISO 92 | Возвращает имя курсора, связанное с обработчиком запроса. |
SQLSetCursorName |
Да | ISO 92 | Определяет имя курсора. |
SQLSetScrollOptions |
Да | ODBC | Устанавливает поведение курсора. |
Таблица 7.5. Вызовы ODBC API для подачи запросов
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLExecute |
Да | ISO 92 | Выполняет подготовленный запрос. |
SQLExecDirect |
Да | ISO 92 | Выполняет запрос. |
SQLNativeSql |
Да | ODBC | Возвращает текст SQL-оператора, как переведено драйвером |
SQLDescribeParam |
Нет | ODBC | Возвращает описание для определенного параметра в запросе. Не поддержан Connector/ODBC: возвращенным результатам нельзя доверять. |
SQLNumParams |
Да | ISO 92 | Возвращает количество параметров в запросе. |
SQLParamData |
Да | ISO 92 | Используется вместе с SQLPutData , чтобы
снабжать данными параметра во время выполнения.
Полезно для больших значений данных. |
SQLPutData |
Да | ISO 92 | Посылает часть или все значение данных для параметра. Полезно для больших значений данных. |
Таблица 7.6. Вызовы ODBC API для получения результатов и информации о результатах
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLRowCount |
Да | ISO 92 | Возвращает количество строк, затронутых вставкой, обновлением или удалением. |
SQLNumResultCols |
Да | ISO 92 | Возвращает количество столбцов в наборе результатов. |
SQLDescribeCol |
Да | ISO 92 | Описывает столбец в наборе результатов. |
SQLColAttribute |
Да | ISO 92 | Описывает признаки столбца в наборе результатов. |
SQLColAttributes |
Да | Устаревшая | Описывает признаки столбца в наборе результатов. |
SQLFetch |
Да | ISO 92 | Возвращает многократные строки результата. |
SQLFetchScroll |
Да | ISO 92 | Возвращает прокручиваемые строки результата. |
SQLExtendedFetch |
Да | Устаревшая | Возвращает прокручиваемые строки результата. |
SQLSetPos |
Да | ODBC | Помещает курсор в блоке данных и позволяет запросу освежить данные в наборе строк или обновить (или удалить) данные в наборе результатов. |
SQLBulkOperations |
Да | ODBC | Выполняет оптовые вставки и оптовые операции по закладке, включая обновление, удаление и получение по закладке. |
Таблица 7.7. Вызовы ODBC API для получения ошибки или диагностической информации
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLError |
Да | Устаревшая | Возвращает дополнительную ошибку или информацию о статусе. |
SQLGetDiagField |
Да | ISO 92 | Возвращает дополнительную диагностическую информацию (единственная область диагностической структуры данных). |
SQLGetDiagRec |
Да | ISO 92 | Возвращает дополнительную диагностическую информацию (многократные области диагностической структуры данных). |
Таблица 7.8. Вызовы ODBC API для получения информации о системных таблицах источника данных (функции каталога)
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLColumnPrivileges
| Да | ODBC | Возвращает список столбцов и связанных привилегий для одной или более таблиц. |
SQLColumns |
Да | X/Open | Возвращает список имен столбцов в указанных таблицах. |
SQLForeignKeys |
Да | ODBC | Возвращает список имен столбцов, которые составляют внешние ключи, если они существуют для указанной таблицы. |
SQLPrimaryKeys |
Да | ODBC | Возвращает список имен столбцов, которые составляют первичный ключ для таблицы. |
SQLSpecialColumns |
Да | X/Open | Информация об оптимальном наборе столбцов, который однозначно определяет строку в указанной таблице или столбцах, которые автоматически обновляются, когда любое значение в строке обновляется транзакцией. |
SQLStatistics |
Да | ISO 92 | Статистика о единственной таблице и списке индексов, связанных с ней. |
SQLTablePrivileges |
Да | ODBC | Возвращает список таблиц и привилегий, связанных с каждой таблицей. |
SQLTables |
Да | X/Open | Возвращает список имен таблиц, сохраненных в определенном источнике данных. |
Таблица 7.9. Вызовы ODBC API для выполнения транзакций
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLTransact |
Да | Устаревшая | Передает или откатывает транзакцию. |
SQLEndTran |
Да | ISO 92 | Передает или отменяет транзакцию. |
Таблица 7.10. Вызовы ODBC API для завершения запроса
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLFreeStmt |
Да | ISO 92 | Завершает обработку запроса, сбрасывает ожидающие результаты и, произвольно, освобождает все ресурсы, связанные с дескриптором запроса. |
SQLCloseCursor |
Да | ISO 92 | Закрывает курсор, который был открыт обработчиком запроса. |
SQLCancel |
Да | ISO 92 | Отменяет SQL-оператор. |
Таблица 7.11. Вызовы ODBC API для завершения связи
Имя | Поддержка Connector/ODBC | Стандарт | Цель |
---|---|---|---|
SQLDisconnect |
Да | ISO 92 | Закрывает связь. |
SQLFreeHandle |
Да | ISO 92 | Освобождает окружающую среду, связь, запрос или дескриптор. |
SQLFreeConnect |
Да | Устаревшая | Освобождает обработчик соединения. |
SQLFreeEnv |
Да | Устаревшая | Освобождает обработчик окружения. |
Следующая таблица иллюстрирует, как Connector/ODBC отображает типы данных сервера для типов данных SQL и C.
Таблица 7.12. Отображение типов данных MySQL в SQL и C
Исходное значение | Тип в SQL | Тип в C |
---|---|---|
bigint unsigned |
SQL_BIGINT |
SQL_C_UBIGINT |
bigint |
SQL_BIGINT |
SQL_C_SBIGINT |
bit |
SQL_BIT |
SQL_C_BIT |
bit |
SQL_CHAR |
SQL_C_CHAR |
blob |
SQL_LONGVARBINARY |
SQL_C_BINARY |
bool |
SQL_CHAR |
SQL_C_CHAR |
char |
SQL_CHAR |
SQL_C_CHAR |
date |
SQL_DATE |
SQL_C_DATE |
datetime |
SQL_TIMESTAMP |
SQL_C_TIMESTAMP |
decimal |
SQL_DECIMAL |
SQL_C_CHAR |
double precision |
SQL_DOUBLE |
SQL_C_DOUBLE |
double |
SQL_FLOAT |
SQL_C_DOUBLE |
enum |
SQL_VARCHAR |
SQL_C_CHAR |
float |
SQL_REAL |
SQL_C_FLOAT |
int unsigned |
SQL_INTEGER |
SQL_C_ULONG |
int |
SQL_INTEGER |
SQL_C_SLONG |
integer unsigned |
SQL_INTEGER |
SQL_C_ULONG |
integer |
SQL_INTEGER |
SQL_C_SLONG |
long varbinary |
SQL_LONGVARBINARY |
SQL_C_BINARY |
long varchar |
SQL_LONGVARCHAR |
SQL_C_CHAR |
longblob |
SQL_LONGVARBINARY |
SQL_C_BINARY |
longtext |
SQL_LONGVARCHAR |
SQL_C_CHAR |
mediumblob |
SQL_LONGVARBINARY |
SQL_C_BINARY |
mediumint unsigned |
SQL_INTEGER |
SQL_C_ULONG |
mediumint |
SQL_INTEGER |
SQL_C_SLONG |
mediumtext |
SQL_LONGVARCHAR |
SQL_C_CHAR |
numeric |
SQL_NUMERIC |
SQL_C_CHAR |
real |
SQL_FLOAT |
SQL_C_DOUBLE |
set |
SQL_VARCHAR |
SQL_C_CHAR |
smallint unsigned |
SQL_SMALLINT |
SQL_C_USHORT |
smallint |
SQL_SMALLINT |
SQL_C_SSHORT |
text |
SQL_LONGVARCHAR |
SQL_C_CHAR |
time |
SQL_TIME |
SQL_C_TIME |
timestamp |
SQL_TIMESTAMP |
SQL_C_TIMESTAMP |
tinyblob |
SQL_LONGVARBINARY |
SQL_C_BINARY |
tinyint unsigned |
SQL_TINYINT |
SQL_C_UTINYINT |
tinyint |
SQL_TINYINT |
SQL_C_STINYINT |
tinytext |
SQL_LONGVARCHAR |
SQL_C_CHAR |
varchar |
SQL_VARCHAR |
SQL_C_CHAR |
year |
SQL_SMALLINT |
SQL_C_SHORT |
Следующие таблицы приводят коды ошибок, возвращенные Connector/ODBC, кроме ошибок сервера.
Таблица 7.13. Специальные коды ошибок, возвращенные Connector/ODBC
Исходный код | SQLSTATE 2 | SQLSTATE 3 | Сообщение об ошибке |
---|---|---|---|
500 | 01000 | 01000 | Общее предупреждение. |
501 | 01004 | 01004 | Строка обрезана справа. |
502 | 01S02 | 01S02 | Значение опции меняется. |
503 | 01S03 | 01S03 | Нет строк для обновления/удаления. |
504 | 01S04 | 01S04 | Больше одной строки для обновления/удаления. |
505 | 01S06 | 01S06 | Попытка получения прежде чем набор результатов возвратил первый набор строк. |
506 | 07001 | 07002 | SQLBindParameter не используемый
для всех параметров. |
507 | 07005 | 07005 | Подготовленный запрос не спецификация курсора. |
508 | 07009 | 07009 | Недействительный дескрипторный индекс. |
509 | 08002 | 08002 | Имя подключения занято. |
510 | 08003 | 08003 | Связь не существует. |
511 | 24000 | 24000 | Недействительный статус курсора. |
512 | 25000 | 25000 | Недействительный статус транзакции. |
513 | 25S01 | 25S01 | Неизвестный статус транзакции. |
514 | 34000 | 34000 | Недействительное имя курсора. |
515 | S1000 | HY000 | Общая ошибка драйвера. |
516 | S1001 | HY001 | Ошибка распределения памяти. |
517 | S1002 | HY002 | Недействительный номер столбца. |
518 | S1003 | HY003 | Недействительный тип буфера приложений. |
519 | S1004 | HY004 | Недействительный тип данных SQL. |
520 | S1009 | HY009 | Недействительное использование нулевого указателя. |
521 | S1010 | HY010 | Ошибка последовательности функции. |
522 | S1011 | HY011 | Признак не может быть установлен сейчас. |
523 | S1012 | HY012 | Недействительный операционный код транзакции. |
524 | S1013 | HY013 | Ошибка управления памятью./td> |
525 | S1015 | HY015 | Нет доступного имени курсора. |
526 | S1024 | HY024 | Недействительное значение атрибута. |
527 | S1090 | HY090 | Недействительная последовательность или длина буфера. |
528 | S1091 | HY091 | Недействительный дескрипторный идентификатор области. |
529 | S1092 | HY092 | Недействительный идентификатор признака/опции. |
530 | S1093 | HY093 | Неправильное число параметров. |
531 | S1095 | HY095 | Тип функции вне диапазона. |
532 | S1106 | HY106 | Тип возврата вне диапазона. |
533 | S1117 | HY117 | Значение строки вне диапазона. |
534 | S1109 | HY109 | Недействительная позиция курсора. |
535 | S1C00 | HYC00 | Дополнительная опция, не реализованная. |
0 | 21S01 | 21S01 | Количество столбцов не соответствует количеству значений. |
0 | 23000 | 23000 | Нарушение ограничения целостности. |
0 | 42000 | 42000 | Синтаксическая ошибка или нарушение прав доступа. |
0 | 42S02 | 42S02 | Базовая таблица или представление не найдено. |
0 | 42S12 | 42S12 | Индекс не найден. |
0 | 42S21 | 42S21 | Столбец уже существует. |
0 | 42S22 | 42S22 | Столбец не найден. |
0 | 08S01 | 08S01 | Ошибка линии связи. |