[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Postgresql ODBC driver not found



Thenk you, Henning, thank you Gregory .

On 9/23/21 5:49 PM, Gregory Seidman wrote:
On Thu, Sep 23, 2021 at 08:18:45AM -0400, Henning Follmann wrote:

I don't see where you ask for the PostgreSQL ODBC connection in particular.
Maybe I'm the one missing something?
You are right, I am not trying to connect (not soon) but trying to get the list of available drivers !
isql "PostgreSQL Unicode" <user> <password>

and perform a minimum check like:
select 1;

SQL> select 1
+------------+
| ?column?   |
+------------+
| 1          |
+------------+
SQLRowCount returns 1
1 rows fetched

SQL> quit


unixodbc seems to work...

I put here the full c++ source and the full result :


#include <iostream>
#include <string>
#include <stdio.h>
#pragma GCC diagnostic ignored "-Wendif-labels"
#pragma GCC diagnostic ignored "-Wwrite-strings"

#define TDBG clock_t ttdbg=clock();float ftdbg=((float)ttdbg)/CLOCKS_PER_SEC; #define DBG_(fmt, args...) {TDBG fprintf(stdout,string( string("D%5.1f:ln %d:%s(): ")+fmt).c_str(),ftdbg,__LINE__, __func__, ##args);fflush(stdout);}

using namespace std;
extern "C"
{
#include <sql.h>
#include <sqlext.h>
}
int main(int argc, char **argv)
{
    DBG_("Start  : Compile time :  __DATE__ __TIME__\n");
    SQLHENV env;
    SQLCHAR driver[256];
    SQLCHAR attr[256];
    SQLSMALLINT driver_ret;
    SQLSMALLINT attr_ret;
    SQLUSMALLINT direction;
    SQLRETURN ret;

    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
    SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);

    cout << env<<endl;
    direction = SQL_FETCH_FIRST;
    while(SQL_SUCCEEDED(ret = SQLDrivers(env, direction,
                                            driver, sizeof(driver), &driver_ret,                                             attr, sizeof(attr), &attr_ret))) {
            direction = SQL_FETCH_NEXT;
            printf("%s - %s\n", driver, attr);
            if (ret == SQL_SUCCESS_WITH_INFO) printf("\tdata truncation\n");
    }
    return 0;
}


Result :

nous@pcouderc:~/projets/tttt/build$ ./ttest
D  0.0:ln 33:main(): Start  : Compile time :  __DATE__ __TIME__
0x55b0948ffed0
nous@pcouderc:~/projets/tttt/build$

and meson.build for completeness :

project('ttest','cpp', default_options : ['cpp_std=c++17'],
        version : '0.1')
cpp = meson.get_compiler('cpp')
libiodbc_dep = cpp.find_library('libiodbc')
incdirs = include_directories('/usr/include/iodbc')
executable('ttest', 'main.cpp', dependencies : [libiodbc_dep], include_directories : incdirs)




Reply to: