如何在Ubuntu下用QODBC连接SqlServer
大家好,我最近遇到一个问题,想请教一下大家。环境:Ubuntu 11.04 ,Qt4.7.4先在Ubuntu下编译了odbc,得到libqsqlodbc.so,放到sqldrivers文件夹后,用QSqlDataBase类去连接,可以检测到QODBC驱动。 代码如下: db =QSqlDatabase::addDatabase("QODBC","ODBC"); db.setHostName("192.168.168.45"); //如果dsn中已经含有SERVER,可以省略此句 QString dsn = QString::fromLocal8Bit ("DRIVER={SQL SERVER};SERVER=192.168.168.45;DATABASE=test;uid=test;pwd=123"); //如果已经设定DSN,可以写为QString::fromLocal8Bit("SQLSERVER_DSN") db.setDatabaseName(dsn); //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤 db.setUserName("test"); db.setPassword("123"); if(!db.open()) { qDebug()<< "Cannot open database-Sql Server" \ <<"Unable to establish a database connection." \ << db.lastError().text(); return false; } 编译能过,调试时会报如下错误: /home/share/database-build-desktop/database: symbol lookup error: /usr/lib/qt4/plugins/sqldrivers/libqsqlodbc.so: undefined symbol: SQLAllocHandle 问题出现了: 看错误是QODBC编译有问题,我是直接用QtCreator编译Qt自带的odbc源码得到的libqsqlodbc.so,是不是这里不能这样编译?(如果需要像编译Mysql驱动一样,要在命令行下,而且加如"INCLUDEPATH+=..."之类的参数,那么参数应该如何写呢?) 另外,在Ubuntu下连接SqlServer的DSN串是这样写的吗? 谢谢!