Программирование >>  Разработка пользовательского интерфейса 

1 ... 92 93 94 [ 95 ] 96 97 98 ... 147


If intRet <<>> SQL SUCCESS Then

Call rODBCErrorInfo(mtypODBC.lngHenv, mtypODBC.lngHdbc, mtypODBC.lngHstmt)

End If

mtypODBC.strCursorName = rODBCGetCursorName() Выполнение SQL выражения

intRet = oSQLExecDirect(ByVal mtypODBC.lngHstmt,

strSQL, Len(strSQL))

If intRet <<>> SQL SUCCESS Then

Call rODBCErrorInfo(mtypODBC.lngHenv, mtypODBC.lngHdbc, mtypODBC.lngHstmt)

End If

If intRet <<>> SQL SUCCESS And intRet <<>> SQL SUCCESS WITH INFO Then

rODBCOpenRecordset = False

GoTo rODBCOpenRecordsetExit End If

Выводит информацию о колонке intRet = rODBCGetColumnInfo() If Not intRet Then

rODBCOpenRecordset = False

GoTo rODBCOpenRecordsetExit End If

rODBCOpenRecordsetExit:

Exit Function rODBCOpenRecordsetErr:

MsgBox Err.Number & : & Err.Description,

vbCritical, rODBCOpenRecordset() rODBCOpenRecordset = False Resume rODBCOpenRecordsetExit End Function

Как и большинство API, ODBC API активно использует указатели. Указатели используются для ссылок на объекты, с которыми вы работаете. ODBC приложения работают с тремя типами указателей: окружения, соединения и утверждения. Каждое приложение, которое использует ODBC, начинается с размещения одного указателя окружения (устанавливаемого с помощью SQLAllocEnv) и заканчивается освобождением этого указателя (SQLFreeEnv). Указатель окружения - это родительский или главный указатель, с которым непосредственно связаны другие ресурсы ODBC, размещаемые для приложения.

Для того чтобы исключить появление незавершенных результатов и освободить указатель SQL выражения, используйте следующее выражение, предварительно объявив функцию с помощью команды Declare:

Declare Function oSQLFreeStmt Lib odbc32.dll

Alias SQLFreeStmt (ByVal hstmt As Long, ByVal fOption As Integer) As Integer rc = oSQLFreeStmt (mtypODBC.lngHstmt, SQL CLOSE)

Следующие функции служат для освобождения указателя соединения и окружения:

Declare Function oSQLFreeConnect Lib odbc32.dll Alias SQLFreeConnect (ByVal hdbc As Long) As Integer Declare Function oSQLFreeEnv Lib odbc32.dll Alias SQLFreeEnv (ByVal henv As Long) As Integer

Как правило, любой сеанс работы с использованием ODBC API должен заканчиваться вызовом этих функций. Вызывая их из Access или Visual Basic, вы можете оформить это примерно таким образом, как показано в следующем примере ниже описании функции:

Function rODBCDisconnect()

Отсоединение от источника данных (Data Source)

Dim intRet As Integer

On Error GoTo rODBCDisconnectErr

intRet = oSQLDisconnect(ByVal mtypODBC.lngHdbc)

If intRet <<>> SQL SUCCESS Then

Call rODBCErrorInfo(mtypODBC.lngHenv,



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,



1 ... 92 93 94 [ 95 ] 96 97 98 ... 147

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика