当前位置:编程学习 > wap >>

qt连接mysql运行时出现QSqlQuery::exec:database not open,怎么解决

#include <QtCore/QCoreApplication>
#include<QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setUserName("root");
db.setPassword("root");
db.setHostName("localhost");
db.setDatabaseName("xinxi");
QSqlQuery query(db);
query.exec("create table student (id int primary key,name varchar)");
query.exec("insert into student values(1,'xiaogang')");
query.exec("insert into student values(2,'xiaoming')");
query.exec("insert into student values (3,'xiaohong')");
return a.exec();
}
qt mysql database --------------------编程问答-------------------- 你要编译驱动的  ,QT的mysql的驱动是以插件形式加载的 。要自己编译。百度QT mysql应该有很多文章。 --------------------编程问答-------------------- 已经编译mysql的驱动了,


#include <QtCore/QCoreApplication>
#include<QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"Available drivers:";
QStringList drivers=QSqlDatabase::drivers();
foreach(QString driver ,drivers)
qDebug()<<"\t" << driver;
return a.exec();
}
然后运行出了

但在运行以下代码是就不行了

#include <QtCore/QCoreApplication>
#include<QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setUserName("root");
db.setPassword("root");
db.setHostName("localhost");
db.setDatabaseName("xinxi");
if(db.open()){
qDebug()<<"open\n"<<db.lastError().driverText()<<"\n";
}
else{
qDebug()<<"open faile\n";
}
QSqlQuery query(db);
query.exec("create table student (id int primary key,name varchar)");
query.exec("insert into student values(1,'xiaogang')");
query.exec("insert into student values(2,'xiaoming')");
query.exec("insert into student values (3,'xiaohong')");
return a.exec();
}
--------------------编程问答-------------------- 希望各位高人多多指点。
--------------------编程问答-------------------- 你自己对比一下不就知道了。 --------------------编程问答-------------------- 你少了db.open
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,