Доступ к MSSQL из Qt ([unixODBC][Driver Manager]Data source name not found, and no default)

Модератор: Модераторы разделов

ksm74
Сообщения: 1
ОС: Windows, Linux

Доступ к MSSQL из Qt

Сообщение ksm74 »

Не могу получить доступ из программы на QT к базе MS SQL.

Настроил unixodbc и freetds следующим образом:

1. /usr/local/etc/freetds.conf

[DB_ST]
host = 192.168.11.101
port = 1433
tds version = 8.0

2. /usr/local/etc/odbcinst.ini

[TDS]
Description = FreeTDS driver
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsodbc.so
Trace = Yes
TraceFile = /tmp/freetds.log
FileUsage = 1

3. /usr/local/etc/odbc.ini

[st]
Driver = TDS
Description = MS SQL NAVDB
Trace = Yes
TraceFile = /tmp/mstest.log
Servername = DB_ST
Database = gs
Port = 1433

Проверяю настройку ODBC

tsql -S DB_st -U st1

и

isql -v st st1 st1

В обеих случаях происходит подключение к базе успешно.

Далее пытаюсь подключится из программы на , выдает ошибку

[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect


Написал небольшое тестовое приложение:


int main(int argc, char *argv[]) {
QApplication app(argc, argv);


QString str ;
QSqlDatabase dbNav ;
QStringList lsDrivers = QSqlDatabase::drivers() ;
qDebug("-------------------------------------------------------") ;
qDebug("ODBC divers :") ;
for(int i = 0 ; i < lsDrivers.size() ; i++)
qDebug() << lsDrivers[i] ;

qDebug("-------------------------------------------------------") ;
qDebug() << "Current ODBC diver - " << "QODBC";


dbNav = QSqlDatabase::addDatabase("QODBC");
qDebug() << "QSqlDatabase::addDatabase(QODBC) - " << dbNav.isValid() ;

qDebug("-------------------------------------------------------") ;

QString dsn = QString("DRIVER={TDS};SERVER=192.168.11.101;TDS_VERSION=8.0;PORT=1433;DATABASE=gs;UID=st1;PWD=st1") ;
qDebug() << "DB connect string - " << dsn ;
dbNav.setDatabaseName(dsn);
qDebug( ) << QString((dbNav.open() != 0) ? "Connect - OK" : dbNav.lastError().text()) ;
if (dbNav.isOpen()) dbNav.close() ;

qDebug("-------------------------------------------------------") ;
dsn = QString("DRIVER={TDS};DSN=st;TDS_VERSION=8.0;PORT=1433;DATABASE=gs;UID=st1;PWD=st1") ;
qDebug() << "DB connect string - " << dsn ;
dbNav.setDatabaseName(dsn);
qDebug( ) << QString((dbNav.open() != 0) ? "Connect - OK" : dbNav.lastError().text()) ;
if (dbNav.isOpen()) dbNav.close() ;

qDebug("-------------------------------------------------------") ;
qDebug() << "DB connect string - " << "DRIVER={TDS};DSN=st" ;
dbNav.setDatabaseName("DRIVER={TDS};DSN=st");
dbNav.setUserName("st1");
dbNav.setPassword("st1");
qDebug( ) << QString((dbNav.open() != 0) ? "Connect - OK" : dbNav.lastError().text()) ;
if (dbNav.isOpen()) dbNav.close() ;


qDebug("-------------------------------------------------------") ;

}

Подключиться не удается, при этом видит все плагины для баз данных.
Результат выводит следующий

-------------------------------------------------------
ODBC divers :
"QSQLITE"
"QSQLITE3"
"QMYSQL3"
"QMYSQL"
"QODBC3"
"QODBC"
-------------------------------------------------------
Current ODBC diver - QODBC
QSqlDatabase::addDatabase(QODBC) - true
-------------------------------------------------------
DB connect string - "DRIVER={TDS};SERVER=192.168.11.101;TDS_VERSION=8.0;PORT=1433;DATABASE=gs;UID=st1;PWD=st1"
"[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
-------------------------------------------------------
DB connect string - "DRIVER={TDS};DSN=st;TDS_VERSION=8.0;PORT=1433;DATABASE=gs;UID=st1;PWD=st1"
"[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
-------------------------------------------------------
DB connect string - DRIVER={TDS};DSN=st
"[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
-------------------------------------------------------

Неделю уже ищу информацию в интернете, ничег не пойму.

Кто сможет сказать в чем причина и где искать?????????????

Спасибо сказали: