linux qt连接sqlserver,ubuntu下qt连接sqlserver2008

最近在弄qt连接sqlserver2008,总是出现如下错误提示.

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

对于上述错误,我在网上找遍了,也没有找到结果.但是最后被我偶然试出来了.特此记录一下,给日后提醒.

相关的测试库,odbc,freetds,qt等等库都是要装的

首先是下面配置文件,要确保正确.

# vim /etc/freetds/freetds.conf

[factorytest]

host = 192.168.1.7

port = 1433

tds version = 8.0

# vim /etc/odbc.ini

[factorytest]

Driver          = SQLServer

Description     = SQLServer

Server          = 192.168.1.7

Database        = factorytest

Port            = 1433

# vim /etc/odbcinst.ini

[ODBC]

Trace           = Yes

TraceFile       = /tmp/sql.log

ForceTrace      = Yes

Pooling         = No

[SQLServer]

Description     = SQLServer

Driver          = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

Setup           = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

UsageCount      = 1

CPTimeout       = 5

CPReuse         = 5

FileUsage       = 1

//

下面是测试连接的代码

// http://stackoverflow.com/questions/12660406/connecting-to-sql-server-2005-through-qt-c #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; QString buildDSN(QString server, QString database, QString username, QString password) {     QString dsn = QString("DRIVER={SQLSERVER};SERVER=%1;TDS_VERSION=8.0;PORT=1433;DATABASE=%2;UID=%3;PWD=%4;")         .arg(server).arg(database).arg(username).arg(password);          return dsn; } int main(int argc, char *argv[]) {     QCoreApplication app(argc, argv);          qDebug() << "Available drivers:";     QStringList drivers = QSqlDatabase::drivers();     for(int i = 0; i < drivers.size(); i++)     {         qDebug() << drivers[i];     }          QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "factorytest"); //    QString dsn = QString::fromLocal8Bit( //        "DRIVER={SQL SERVER};" //        "SERVER=192.168.1.7;" //        "DATABASE=factorytest;" //        "UID=sa;" //        "PWD=root;"); #if 0 //"DRIVER={FreeTDS};"     QString dsn = QString("DRIVER={SQLSERVER};"  "SERVER=192.168.1.7;"                           "TDS_VERSION=8.0;"                           "PORT=1433;"                           "DATABASE=factorytest;"                           "UID=sa;"                           "PWD=root;");          //    QString dsn = "factorytest";     db.setHostName("192.168.1.7");     db.setPort(1433);     db.setDatabaseName(dsn);     db.setUserName("sa");     db.setPassword("root"); #endif      #if 1     QString server = "192.168.1.7";     QString database = "factorytest";     QString username = "sa";     QString password = "root"; db.setDatabaseName(buildDSN(server, database, username, password)); #endif          bool test = db.isValid();//true     cout << "test = " << test << endl;          bool r = db.open();     if(r)     {         cout << endl << "+connected [OK]" << endl;     }     else     {         cout << endl << "-connected [NG]" << endl;         QString error = db.lastError().text();         cout << error.toLocal8Bit().data() << endl;;     }          return 0; //app.exec(); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值