Note that there are some explanatory texts on larger screens.

plurals
  1. POmicrosoft odbc drivermanager SQLColAttribute SQL_INVALID_HANDLE
    primarykey
    data
    text
    <p>I'm getting SQL_INVALID_HANDLE error when calling SQLColAttribute from an application (trying to communicate with self developed odbc driver) I don't know why the handle is stated an invalid handle, since its a simple struct, which is still valid at runtime, ive checked it. The driver is a non unicode driver and im using it from a non unicode test application.</p> <p>The driver also manages to set (log from the driver)</p> <pre><code>SQLGetStmtAttr called: Attribute to set is: SQL_ATTR_APP_ROW_DESC SQLGetStmtAttr called: Attribute to set is: SQL_ATTR_APP_PARAM_DESC SQLGetStmtAttr called: Attribute to set is: SQL_ATTR_IMP_ROW_DESC SQLGetStmtAttr called: Attribute to set is: SQL_ATTR_IMP_PARAM_DESC </code></pre> <p>properly before calling sqlprepare</p> <p>the driver manager log:</p> <pre><code>ODBC_Test 2210-151c ENTER SQLAllocHandle SQLSMALLINT 1 &lt;SQL_HANDLE_ENV&gt; SQLHANDLE 0x00000000 SQLHANDLE * 0x002EFCC0 ODBC_Test 2210-151c EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS) SQLSMALLINT 1 &lt;SQL_HANDLE_ENV&gt; SQLHANDLE 0x00000000 SQLHANDLE * 0x002EFCC0 ( 0x003541C8) ODBC_Test 2210-151c ENTER SQLSetEnvAttr SQLHENV 0x003541C8 SQLINTEGER 200 &lt;SQL_ATTR_ODBC_VERSION&gt; SQLPOINTER 3 &lt;SQL_OV_ODBC3&gt; SQLINTEGER 0 ODBC_Test 2210-151c EXIT SQLSetEnvAttr with return code 0 (SQL_SUCCESS) SQLHENV 0x003541C8 SQLINTEGER 200 &lt;SQL_ATTR_ODBC_VERSION&gt; SQLPOINTER 3 &lt;SQL_OV_ODBC3&gt; SQLINTEGER 0 ODBC_Test 2210-151c ENTER SQLAllocHandle SQLSMALLINT 2 &lt;SQL_HANDLE_DBC&gt; SQLHANDLE 0x003541C8 SQLHANDLE * 0x002EFCA8 ODBC_Test 2210-151c EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS) SQLSMALLINT 2 &lt;SQL_HANDLE_DBC&gt; SQLHANDLE 0x003541C8 SQLHANDLE * 0x002EFCA8 ( 0x00354250) ODBC_Test 2210-151c ENTER SQLConnectW HDBC 0x00354250 WCHAR * 0x00352EB8 [ 5] "dsn01" SWORD 5 WCHAR * 0x55128B34 [ -3] "******\ 0" SWORD -3 WCHAR * 0x55128B34 [ -3] "******\ 0" SWORD -3 ODBC_Test 2210-151c EXIT SQLConnectW with return code 0 (SQL_SUCCESS) HDBC 0x00354250 WCHAR * 0x00352EB8 [ 5] "dsn01" SWORD 5 WCHAR * 0x55128B34 [ -3] "******\ 0" SWORD -3 WCHAR * 0x55128B34 [ -3] "******\ 0" SWORD -3 ODBC_Test 2210-151c ENTER SQLAllocHandle SQLSMALLINT 3 &lt;SQL_HANDLE_STMT&gt; SQLHANDLE 0x00354250 SQLHANDLE * 0x002EF6F8 ODBC_Test 2210-151c EXIT SQLAllocHandle with return code 0 (SQL_SUCCESS) SQLSMALLINT 3 &lt;SQL_HANDLE_STMT&gt; SQLHANDLE 0x00354250 SQLHANDLE * 0x002EF6F8 ( 0x00355790) ODBC_Test 2210-151c ENTER SQLPrepare HSTMT 0x00355790 UCHAR * 0x00DB89C8 [ 72] "select COUNTRYFR,CITYFROM,CITYTO from SPFLI where CITYFROM EQ 'NEW YORK'" SDWORD 72 ODBC_Test 2210-151c EXIT SQLPrepare with return code 0 (SQL_SUCCESS) HSTMT 0x00355790 UCHAR * 0x00DB89C8 [ 72] "select COUNTRYFR,CITYFROM,CITYTO from SPFLI where CITYFROM EQ 'NEW YORK'" SDWORD 72 ODBC_Test 2210-151c ENTER SQLColAttribute SQLHSTMT 0x00355790 SQLSMALLINT 1 SQLSMALLINT 14 &lt;SQL_DESC_TYPE_NAME&gt; SQLPOINTER 0x002EF6B0 SQLSMALLINT 50 SQLSMALLINT * 0x002EF6A4 SQLPOINTER 0x00000000 (NYI) ODBC_Test 2210-151c ENTER SQLColAttribute SQLHSTMT 0x00C05200 SQLSMALLINT 1 SQLSMALLINT 14 &lt;SQL_DESC_TYPE_NAME&gt; SQLPOINTER 0x002EF6B0 SQLSMALLINT 50 SQLSMALLINT * 0x002EF6A4 SQLPOINTER 0x00000000 (NYI) ODBC_Test 2210-151c EXIT SQLColAttribute with return code -2 (SQL_INVALID_HANDLE) SQLHSTMT 0x00C05200 SQLSMALLINT 1 SQLSMALLINT 14 &lt;SQL_DESC_TYPE_NAME&gt; SQLPOINTER 0x002EF6B0 SQLSMALLINT 50 SQLSMALLINT * 0x002EF6A4 SQLPOINTER 0x00000000 (NYI) ODBC_Test 2210-151c EXIT SQLColAttribute with return code -2 (SQL_INVALID_HANDLE) SQLHSTMT 0x00355790 SQLSMALLINT 1 SQLSMALLINT 14 &lt;SQL_DESC_TYPE_NAME&gt; SQLPOINTER 0x002EF6B0 SQLSMALLINT 50 SQLSMALLINT * 0x002EF6A4 SQLPOINTER 0x00000000 (NYI) </code></pre> <p>The test program is pretty simple:</p> <pre><code>SQLHANDLE hEnv ; SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &amp;hEnv ) ; SQLSetEnvAttr( hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 ) ; SQLHANDLE hConn ; SQLAllocHandle( SQL_HANDLE_DBC, hEnv, &amp;hConn ); SQLCHAR* dsnName = (SQLCHAR*)"dsn01" ; // MUST BE THE SAME SQLCHAR* userid = (SQLCHAR*)"nodata\0"; SQLCHAR* password = (SQLCHAR*)"nodata\0"; SQLConnect( hConn, dsnName, 5, userid, SQL_NTS, password, SQL_NTS); HSTMT hStmt ; SQLAllocHandle( SQL_HANDLE_STMT, hConn, &amp;hStmt ) ; SQLCHAR* query = (SQLCHAR*)"select COUNTRYFR,CITYFROM,CITYTO from SPFLI where CITYFROM EQ 'NEW YORK'"; SQLPrepare(hStmt,query,strlen((const char*)query)); SQLCHAR TypeName[50]; SQLSMALLINT TypeNameLen; SQLColAttribute((SQLHSTMT)hStmt,1,SQL_DESC_TYPE_NAME,TypeName, sizeof(TypeName),&amp;TypeNameLen,NULL); </code></pre> <p>Anyone knows what can cause SQLColAttribute to give back SQL_INVALID_HANDLE ? I've read msdn but nothing useful was there.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload