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