Не могу получить доступ из программы на 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"
-------------------------------------------------------
Неделю уже ищу информацию в интернете, ничег не пойму.
Кто сможет сказать в чем причина и где искать?????????????
Доступ к MSSQL из Qt ([unixODBC][Driver Manager]Data source name not found, and no default)
Модератор: Модераторы разделов