您的位置:首页 > 编程语言 > Qt开发

ubuntu下qt连接sqlserver2008

2014-04-16 09:41 281 查看
最近在弄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<QtCore/QCoreApplication>

#include<QWidget>

#include<ostream>

#include<iostream>

#include<QFile>

#include<QTime>

#include<stdio.h>

#include<QTextStream>

#include<QSqlDatabase>

#include<QSqlError>

#include<QSqlDriver>

#include<QDebug>

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: