Значение HSTMT, UCHAR, SDWORD в ODBC Log

У меня есть следующие строки в моем журнале ODBC:

(Сценарий: pgAdmin4, использование сервера PostgreSQL через ODBC32 в другом приложении с именем System Administration)

System Admi 6a0-6f8 ENTER SQLExecDirect 
        HSTMT               0x00630718
        UCHAR *             0x036B29C0 [      63] "create table new (npages integer, ifnds integer, ifnid integer)"
        SDWORD                    63

Мне нужно знать значение HSTMT, UCHAR* а также SDWORD, Что означают эти цифры рядом с ними?

2 ответа

Решение

Из статьи Все, что вы хотите знать о трассировке ODBC

В журнале трассировки вы увидите тип данных дескриптора: SQLHANDLE, HENV / SQLHENV, HDBC / SQLHDBC, HSTMT / SQLHSTMT. Это значение уникально для конкретной серии вызываемых предметов. Вы можете найти в журнале трассировки этот номер дескриптора, и каждый вызов, сделанный на дескрипторе, будет показан. Это позволяет вам выбирать только те вызовы в журнале трассировки, которые имеют отношение к вашему сообщению об ошибке. Имейте в виду, что некоторые приложения могут создавать несколько дескрипторов. Например, ваше приложение может выполнять три оператора подряд, каждый из которых находится в отдельном дескрипторе оператора.

За примерами и более подробной информацией обращайтесь к следующему приятному документу:

Как прочитать файл трассировки ODBC.rtf

Это запись трассировки ODBC

Была процедура "SQLExecDirect" с дескриптором оператора 0x00630718, текстовый параметр (переданный как указатель) - "создать таблицу...", а последний параметр - размер текста (переданный как тип слова). Смотрите соответствующий ответ в MSDOC. HSTMT,UCHAR, SDWORDS типы данных, используемые C, C++ MS Windows API.

Другие вопросы по тегам