直接上代码
#include <QtGui/QApplication>
#include<QtSql>
#include<QLabel>
#include<QSqlDatabase>
#include<QDebug>
#include <QSqlQuery>
bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("travel");
db.setUserName("root");
db.setPassword("");
if (!db.open())
return false;
db.close();
return true;
}
bool create_table()
{
QSqlQuery query;
query.exec("select * from student");
return true;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel* label = new QLabel;
label->setWindowTitle("QT Database");
if (createConnection())
label->setText("connection success...");
else
label->setText("connection failed...");
label->show();
if(!create_table())
exit;
return a.exec();
}
运行,如下结果 QSqlQuery::exec: database not open
而且label显示connection success,这是为什么啊
------解决方案--------------------
你的代码有逻辑错误,如果打开就立刻关闭数据库。
------解决方案--------------------
数据库被你后面语句关闭了