为什么我无法连接到我的数据库?

时间:2014-11-09 06:07:10

标签: c++ sql sql-server qt

我已经跟着很多关于发球台的教程,但我仍然无法从Qt连接到我的数据库。我总是得到这个错误:

Closed!  "[Microsoft][ODBC SQL Server Driver][DBMSLPCN]SQL Server does not exist or
access denied. [Microsoft][ODBC SQL Server Driver][DBMSLPCN]ConnectionOpen 
(Connect()). [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute   
QODBC3: Unable to connect"

或者如果我使用SQL NATIVE CLIENT(即代替SQL SERVER)作为DRIVER,我收到以下错误:

Closed!  "[Microsoft][ODBC Driver Manager] Data source name not found and no default 
driver specified QODBC3: Unable to connect"

一直坐在这里好几个小时试图解决这个问题,但我无法看清我做错了什么。服务器,数据库等似乎都有正确的名称。我只是不明白为什么它没有连接。

以下代码

#include "login.h"
#include "ui_login.h"

login::login(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::login)
{
    ui->setupUi(this);

    QSqlDatabase db = QSqlDatabase::addDatabase ("QODBC","Chessgames");
    db.setConnectOptions();
    db.setDatabaseName("DRIVER={SQL SERVER};SERVER=MYNAME\\SQLEXPRESS;DATABASE=Chessgames;Uid=sa;Password=xxxxx;");

    if(db.open())
    {
       qDebug() << "Opened!";
       db.close();
    }

    else
    {
       qDebug() << "Closed! " << db.lastError().text();
    }
}

login::~login()
{
    delete ui;
}

1 个答案:

答案 0 :(得分:2)

通过将主机名更改为IP地址和端口来打开它。

db.setDatabaseName("DRIVER={SQL SERVER};SERVER=192.168.X.X;Port=port#;
                   DATABASE=Chessgames;Uid=sa;Password=xxxxx;");