LINUX.ORG.RU

MS Access ODBC, SQLDriverConnect


0

0

Пишу простенький интерфейс для 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 =
★★★★★

Ответ на: комментарий от anonymous

Посмотрел исходники mdbtools версии 0.5 отсюда - http://mdbtools.sourceforge.net/ (реализация MDB под UNIX/Linux)
Похоже, оно действительно не поддерживает параметра DBQ.
А в стандартный набор параметров, как и утверждаеют множество туториалов, он не входит.

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.