• 5245阅读
  • 3回复

windows下qt连不上MS SQL数据库 [复制链接]

上一主题 下一主题
离线ww991616
 

只看楼主 倒序阅读 楼主  发表于: 2010-06-04
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
connection.h头文件如下:

#ifndef CONNECTION_H
#define CONNECTION_H

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

static bool connection()
{
    db=QSqlDatabase::addDatabase("QODBC", "db");
    db.setHostName("YKZ-20091011WGK\SQLEXPRESS");
    db.setPort(1433);
    db.setDatabaseName(QString
                       ("DRIVER={SQL Server};SERVER=YKZ-20091011WGK\SQLEXPRESS;DATABASE=student;UID=xx;PWD=123123"));
    db.setUserName("xx");
    db.setPassword("123123");
     if(!db.open())
     {
          QMessageBox::information(this, tr("db"), tr("can not open"));
          return false;
     }
}
#endif // CONNECTION_H

编译运行后打开程序
程序弹出对话框 cannot open database
SQL 不存在或者访问被拒绝

请问有兄弟碰到这个情况过没?  该如何解决?   谢谢
离线wlinqiunan

只看该作者 1楼 发表于: 2011-02-28
我也是同样的问题……
离线mylearnhappy
只看该作者 2楼 发表于: 2011-03-07
db = QSqlDatabase::addDatabase("QODBC", "OJ");//OJ为链接的名称,并非数据库名称
    db.setHostName("127.0.0.1"); //如果dsn中已经含有SERVER,可以省略此句
    db.setPort(1433);
    QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=127.0.0.1;DATABASE=DATANAME");
    //如果已经设定DSN,可以写为QString::fromLocal8Bit("SQLSERVER_DSN")
    //127.0.0.1默认指向本机,你可以改成你自己电脑的IP,DATANAME为你的数据库名字,不加引号
    db.setDatabaseName(dsn);
    //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤
    db.setUserName("sa");
    db.setPassword("123456");

    if (!db.open()) {
        QMessageBox::critical(0, qApp->tr("Cannot open database"),
                              qApp->tr("Unable to establish a database connection."
                                       ), QMessageBox::Cancel);
        return false;
离线mylearnhappy
只看该作者 3楼 发表于: 2011-03-07
你可以试一下,其实这个没啥难度的,就是一些函数调用,函数原型你要清楚点
快速回复
限100 字节
 
上一个 下一个