Пишу простенький интерфейс для ODBC'шных баз данных на C++.
Под Windows DSN-less соединение проходит нормально, а вот под wine
при выполнении SQLDriverConnect() выдается:
ErrorMsg=[unixODBC]Could not find DSN in connect string
Сдается мне, что причина в недоработанности ODBC-драйвера (libmdbtools),
и что он не понимает параметр DBQ в строке соединения.
В какую сторону копать ?
Вот фрагмент текста программы:
#define szDSN "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\test.mdb"
....
nResult = pSQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
printf("SQLAllocHandle: %d\n",nResult);
nResult = pSQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
printf("SQLSetEnvAttr: %d\n",nResult);
nResult = pSQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDBC);
printf("SQLAllocHandle: %d\n",nResult);
// nResult = pSQLConnect(hDBC, (SQLTCHAR *)szSource, SQL_NTS, (SQLTCHAR *)szUsername, SQL_NTS, (SQLTCHAR *)szPassword, SQL_NTS);
nResult = pSQLDriverConnect(hDBC, NULL, (SQLTCHAR *)szDSN, SQL_NTS, (SQLTCHAR *)szDSNout, strlen((char *)szDSNout), (SQLSMALLINT *)aLength, SQL_DRIVER_NOPROMPT);
printf("SQLDriverConnect: %d\n",nResult);
/etc/odbcinst.ini:
[{Microsoft Access Driver (*.mdb)}]
Description = Microsoft Access Driver
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage = 1
CPTimeout =
CPReuse =
pacify ★★★★★
15.11.06 19:11:46 MSK