|
Программирование >> Разработка пользовательского интерфейса
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,
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |