sql - IM001 Driver does not support this function (ODBC) -


i'm building custom odbc driver.

my main method:

int main(int argc, char** argv) {      sqlreturn status;     //sqlhandle henv;     //sqlhandle hstmt;     sqlhenv henv;     sqlhdbc dbc = 0;     sqlhstmt hstmt;     sqlchar connstrout[1024];      sqlsmallint x;      // startup banner     //printf();      messagebox(getdesktopwindow(), "odbc client\n\n", "driver", mb_ok);      // show query executed     printf("query: %s\n", "select visits traffic");      // allocate environment     status = sqlallochandle(sql_handle_env, sql_null_handle, &henv);      // check error     odbc_chk_error(sql_handle_env, henv, status, "");      // set odbc version behaviour expected     status = sqlsetenvattr(henv, sql_attr_odbc_version, (sqlpointer) sql_ov_odbc3, 0);     check_status(status, (uchar*)"sqlsetenvattr", henv, sql_handle_env);      // check error     odbc_chk_error(sql_handle_env, henv, status, "");      // allocate connection     status = sqlallochandle(sql_handle_dbc, henv, &dbc);      // check error     odbc_chk_error(sql_handle_env, henv, status, "");       // ----------- real connection takes place @ point      status = sqldriverconnect(dbc, getdesktopwindow(),             (unsigned char*) "dsn=mydsn",             sql_nts, connstrout, 1024, &x,             sql_driver_prompt);       if (sql_succeeded(status)) {         printf("connected\n");         printf("returned connection string was:\n\t%s\n", connstrout);         //sqldisconnect(dbc);        } 

everything works when run main using sample client.

however, when try odbc testing tool odbcte32 or other odbc client(s) such sqldbx or qtodbc, once try establish connection using 'mydsn' (which using custom driver) get: [microsoft][odbc driver manager] driver not support function

i've implemented sqldriverconnect function create outconnectionstring reading key-value-pairs user dsn uses compiled driver dll.

i've defined skeletons odbc functions http://msdn.microsoft.com/en-us/library/windows/desktop/ms714562(v=vs.85).aspx

i compile custom diver using mingw compiler (32-bit). have windows 7 os 64-bit i'm running 32-bit odbc test tool.

this driving me crazy. don't understand specific function not supported in driver. again, have created skeletons needed functions. here's list:

sqlallocconnect , sqlallocenv , sqlallocstmt , sqlallochandle , sqlfreeconnect , sqlfreeenv , sqlfreestmt , sqlbindcol , sqlcancel , sqlconnect , sqldescribecol , sqldisconnect , sqlexecdirect , sqlexecute , sqlextendedfetch , sqlfetch , sqlgetcursorname , sqlnumresultcols , sqlprepare , sqlrowcount , sqlsetcursorname , sqlcolumns , sqldriverconnect , sqlgetdata , sqlgetinfo , sqlgettypeinfo , sqlparamdata , sqlputdata , sqlstatistics , sqltables , sqlbrowseconnect , sqlcolumnprivileg, sqldescribeparam , sqlforeignkeys , sqlmoreresults , sqlnativesql , sqlnumparams , sqlprimarykeys , sqlprocedurecolum, sqlprocedures , sqlsetpos , sqltableprivilege, sqlbindparameter , sqlclosecursor , sqlcolattribute , sqlcopydesc , sqlendtran , sqlfetchscroll , sqlfreehandle , sqlgetconnectattr, sqlgetdescfield , sqlgetdescrec , sqlgetdiagfield , sqlgetdiagrec , sqlgetenvattr , sqlgetstmtattr , sqlsetconnectattr, sqlsetdescfield , sqlsetdescrec , sqlsetenvattr , sqlsetstmtattr , sqlbulkoperations, sqlspecialcolumns.

edit:

figured out. sqldisconnect defined incorrectly. make sure parameters passed correct. right definition was:

retcode sql_api sqldisconnect(sqlhdbc phandle) {     __chk_handle(phandle, sql_handle_dbc, sql_error);     _sqlfreediag(_diagconn(phandle));     _sqldisconnect((pgenodbcconn) phandle);      return (sql_success); } 

the way figured out: create .def file (name same driver dll file name, i.e. in case axodbc.def), list functions present in driver in it, following:

library   axodbc description "driver 1 definitions" exports     sqlallocconnect     sqlallocenv     sqlallocstmt     sqlallochandle     sqlfreeconnect     sqlfreeenv     sqlfreestmt     sqlbindcol     sqlcancel     sqlconnect     sqldescribecol     sqlexecdirect     sqlexecute     sqldisconnect     sqlextendedfetch     sqlfetch     sqlgetcursorname     sqlnumresultcols     sqlprepare     sqlrowcount     sqlsetcursorname     sqlcolumns     sqldriverconnect     sqlgetdata     sqlgetinfo     sqlgettypeinfo     sqlparamdata     sqlputdata     sqlstatistics     sqltables     sqlbrowseconnect     sqlcolumnprivileges     sqldescribeparam     sqlforeignkeys     sqlmoreresults     sqlnativesql     sqlnumparams     sqlprimarykeys     sqlprocedurecolumns     sqlprocedures     sqlsetpos     sqltableprivileges     sqlbindparameter     sqlclosecursor     sqlcolattribute     sqlcopydesc     sqlendtran     sqlfetchscroll     sqlfreehandle     sqlgetconnectattr     sqlgetdescfield     sqlgetdescrec     sqlgetdiagfield     sqlgetdiagrec     sqlgetenvattr     sqlgetstmtattr     sqlsetconnectattr     sqlsetdescfield     sqlsetdescrec     sqlsetenvattr     sqlsetstmtattr     sqlbulkoperations     sqlspecialcolumns 

compile dll (using mingw (g++)) , include .def file, like:

g++ -shared -o axodbc.dll axodbc.cpp connectionmanager.cpp diagnostics.cpp myresources.res axodbc.def -lodbc32 -lodbccp32  

compiler gave me error @ point sqldisconnect defined incorrectly

i don't sqlgetfunctions in list. can enable odbc tracing in driver manager , show odbc calls made , result was.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -