QT4连接SQL Server出现SqlQuery::exec: database not open

我是新手,在用QT4连接SQL Server 2005 Express 时出现了QSqlQuery::exec: database not open这种错误,不知道哪里出错了,谁可以帮帮忙吗

我的做法是:编译了驱动(显示有QODBC这个东东了),然后QT工程里新建一个connection.h的头文件,在main.cpp中加入这个头文件,引用这个头文件中creatconnection()的方法。

源码:
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "dbTemp");
QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=PC-201004231231\SQLEXPRESS;DATABASE=master");
db.setDatabaseName(dsn);
db.setUserName("sa");
db.setPassword("huang110");

if(!db.open()) {

    QMessageBox::critical(0, QObject::tr("Database Error"),

        db.lastError().text());

    return false;
    }

QSqlQuery query(db);
query.exec("create table student (id int primary key, " "name varchar(20))");
query.exec("insert into student values(0, 'first')");
query.exec("insert into student values(1, 'second')");
return true;
}

图片说明

4个回答

k_woon
k_woon 我按照他的方法试过了,也还是出现那个错误。。
大约 5 年之前 回复

先后看数据库能否访问,然后就是odbc是否正确

参考:http://stackoverflow.com/questions/16868078/qsqlqueryexec-database-not-open
添加驱动,检查数据源和链接字符串

在.pro文件中有添加sql的支持吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问