Анимация
JavaScript
|
Главная Библионтека SQLAJ ocEr-iV > SQLAIlQcGDrinact -> SQLCorinc-=t 3Q AllocSlrrt SGLFatth KQI Disnnnrnnt -DROP Option -(lORF Onticn Рис. 8.12. Таблица 8.6. Базисные функции ODBC API Назначение Соединение с источником данных Функция SQLAllocEnv SQLAlloc-Connect SQLConnect Описание Получает указатель окружения. Одно окружение может служить для создания нескольких соединений. Получает указатель соединения. Подготовка SQL запросов Соединяется с указанным драйвером, используя имя источника данных, идентификатор пользователя и пароль. SQLAllocStmt Размещает указатель выражения. mtypODBC.lngHdbc, SQL NULL HSTMT) End If intRet = oSQLFreeConnect(ByVal mtypODBC.lngHdbc) If intRet <<>> SQL SUCCESS Then Call rODBCErrorInfo(mtypODBC.lngHenv, mtypODBC.lngHdbc, SQL NULL HSTMT) End If intRet = oSQLFreeEnv(ByVal mtypODBC.lngHenv) If intRet <<>> SQL SUCCESS Then Call rODBCErrorInfo(mtypODBC.lngHenv, SQL NULL HDBC, SQL NULL HSTMT) End If rODBCDisconnectExit: Exit Function rODBCDisconnectErr: MsgBox Err.Number & ": " & Err.Description, vbCritical, "rODBCDisconnect()" rODBCDisconnect = False Resume rODBCDisconnectExit End Function Как видно из вышеизложенного, функции ODBC API можно разделить на несколько типов, в зависимости от задач, для которых они предназначены. В табл. 8.6 перечислены базисные функции или функции ядра ODBC с пояснениями их назначения (см. также рис. 8.12). При этом функции объединены по признаку их назначения. Выполнение запросов Выборка результатов и информации о результатах Окончание работы выражения Окончание работы соединения SQLPrepare SQLGet- CursorName SQLSet- CursorName SQLExecute SQLExec-Direct SQLRow-Count SQLNum-ResultCol SQLDescribe-Col SQLCol-Attributes SQLBindCol SQLFetch SQLFreeStmt SQLCancel SQLTransact SQL-Disconnect SQLFreeEnv SQLFree- Connect Подготавливает SQL выражение для дальнейшего использования. Возвращает имя, связанное с указателем выражения. Устанавливает имя курсора. Выполняет заранее подготовленный запрос. Выполняет запрос. Возвращает количество записей, задействованных в операциях вставки, удаления, модификации. Возвращает количество колонок в выбранном наборе данных. Описывает колонку в выбранном наборе данных. Описывает атрибуты колонки в выбранном наборе данных. Присваивает место в памяти для колонки в выбранном наборе данных и указывает ее тип данных. Возвращает несколько наборов данных. Заканчивает процесс работы выражения. Прерывает работу выражения. Завершает или откатывает транзакцию. Закрывает транзакцию. Удаляет указатель окружения. Удаляет указатель соединения. Ниже приводится пример объявления функций ODBC API, которые вы можете применять своих программах, если, конечно, в качестве среды разработки используется система, поддерживающая вызов DLL функций: Declare Function oSQLRowCount Lib "odbc32.dll" Alias "SQLRowCount" (ByVal hstmt As Long, pcrow As Long) As Integer Declare Function oSQLBindCol Lib "odbc32.dll" Alias "SQLBindCol" (ByVal hstmt As Long, ByVal icol As Integer, ByVal fCType As Integer, rgbValue As Any, ByVal cbValueMax As Long, pcbValue As Long) As Integer Declare Function oSQLColAttributes Lib "odbc32.dll" Alias "SQLColAttributes" (ByVal hstmt As Long, ByVal icol As Integer, ByVal fCType As Integer, rgbDesc As Any, ByVal cbDescMax As Integer, pcbDesc As Integer, pfDesc As Long) As Integer Declare Function oSQLDescribeCol Lib "odbc32.dll" Alias "SQLDescribeCol" (ByVal hstmt As Long, ByVal icol As Integer, ByVal szColName As String, ByVal cbColNameMax As Integer, pcbColName As Integer, pfSQLType As Integer, pcbColDef As Long, pibScale As Integer, pfNullable As Integer) As Integer Declare Function oSQLDisconnect Lib "odbc32.dll" Alias "SQLDisconnect" (ByVal hdbc As Long) As Integer Declare Function oSQLDriverConnect Lib "odbc32.dll" Alias "SQLDriverConnect" (ByVal hdbc As Long, ByVal Hwnd As Long, ByVal szConnStrIn As String, ByVal cbConnStrIn As Integer, ByVal szConnStrOut As String, ByVal cbConnStrOutMax As Integer, pcbConnStrOut As Integer, ByVal fDriverCompletion As Integer) As Integer Declare Function oSQLError Lib "odbc32.dll" Alias "SQLError" (ByVal henv As Long, ByVal hdbc As Long, ByVal hstmt As Long, ByVal szSqlState As String, pfNativeError As Long, ByVal szErrorMessage As String, ByVal cbErrorMsgMax As Integer, pcErrorMsg As Integer) As Integer Объявленная выше последняя функция служит для обработки ошибок, которые могут возникнуть и возникают при использовании ODBC API. ODBC поддерживает стандартную модель обработки ошибок. Каждая функция ODBC возвращает некий код, одним из которых может быть SQL ERROR. Чтобы получить больше информации об ошибке, приложение вызывает функцию SQLError(). Драйвер хранит информацию об ошибке в структурах henv, hdbc и hstmt и возвращает эту информацию приложению, когда приложение вызывает SQLError(). Каждая функция может вызвать ноль или больше ошибок. Приложение обычно вызывает функцию SQLError(), когда предыдущий вызов ODBC функции возвращает SQL ERROR или SQL SUCCESS WITH INFO. Приложение может тем не менее вызвать SQLError() после вызова любой ODBC функции. Функция SQLError() возвращает следующую информацию: • SQLSTATE - стандартный идентификатор ошибки. • Native Error Code - код ошибки, свойственный данному источнику данных. • Error Message Text - описание ошибки. Ошибки сохраняются для текущего указателя до тех пор, пока данный указатель не будет использован в вызове следующей функции. К примеру, ошибки на hstmt для текущей функции очищаются, как только другая функция будет выполнена с использованием такого же указателя. Ошибки, хранимые для данного указателя, никогда не очищаются в результате вызова функции с использованием указателя другого, хотя и родственного типа. Например, ошибки на hdbc не очищаются, когда вызов делается к родственной hstmt. Функция SQLError() возвращает ошибку из структуры, связанной с самым правым ненулевым аргументом указателя. Приложение запрашивает информацию об ошибке в следующем порядке: • Чтобы получить ошибки, связанные с окружением, приложение передает соответствующий henv и включает SQL NULL HDBC и SQL NULL HSTMT в hdbc и hstmt соответственно. Драйвер возвращает статус ошибки ODBC функции, вызываемой самой последней с тем же самым henv. • Для вывода ошибок, связанных с соединением, приложение передает соответствующий hdbc плюс hstmt, равный SQL NULL HSTMT. В таком случае драйвер игнорирует аргумент henv. Драйвер возвращает статус ошибки функции ODBC, вызванной самой последней с hdbc. • Для отслеживания ошибок, связанных с выражением, приложение передает соответствующий указатель hstmt. Если вызов SQLError() содержит правильный указатель hstmt, драйвер игнорирует аргументы hdbc и henv. Драйвер возвращает статус ошибки самой последней функции ODBC, вызванной с указателем hstmt. • Для отслеживания нескольких ошибок, вызываемых функцией, приложение обращается к SQLError() несколько раз. Для каждой ошибки драйвер возвращает SQL SUCCESS и удаляет эту ошибку из списка доступных ошибок. Когда отсутствует дополнительная информация по самому правому ненулевому указателю, функция SQLError() возвращает SQL NO DATA FOUND. Declare Function oSQLExtendedFetch Lib "odbc32.dll" Alias "SQLExtendedFetch" (ByVal hstmt As Long, ByVal fFetchType As Long, ByVal irow As Integer, pcrow As Long, rgfRowStatus As Integer) As Integer Declare Function oSQLFetch Lib "odbc32.dll" Alias "SQLFetch" (ByVal hstmt As Long) As Integer Declare Function oSQLGetCursorName Lib "odbc32.dll" Alias "SQLGetCursorName" (ByVal hstmt As Long, ByVal szCursor As String, ByVal cbCursorMax As Integer, 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 [ 94 ] 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |