QT连接两个qslite数据库出现数据连接问题报错QSqlQuery::exec: database not open
两个数据库是两个不同的界面,这是其中一个数据库的代码
主函数程序
QSqlDatabase m_db=QSqlDatabase::addDatabase("QSQLITE","material_connect");
m_db.setDatabaseName("E:\Damage-assessment\software\QT\GUI\GUI4.0\gui1.0\build-gui-Desktop_Qt_5_14_2_MSVC2017_64bit-Release\mental_material.db");
if(m_db.open())
{
qDebug()<<"open success1";
}
else
{
qDebug()<<"open failed1";
}
QSqlQueryModel *model=new QSqlQueryModel(this);
QString sql;
sql="select name as 姓名 ,density as 密度, shear_modulus as 剪切模量 ,yield_stress as 屈服应力, maximum_yield_stress as 最大屈服应力, melting_temperature as 熔化温度 from mental_material";
model->setQuery(sql,m_db);
ui->display->setModel(model);
点击按钮的槽函数
void material::on_show_pushButton_clicked()
{
QSqlQueryModel *model=new QSqlQueryModel;
QString sql;
sql="select name as 姓名 ,density as 密度, shear_modulus as 剪切模量 ,yield_stress as 屈服应力, maximum_yield_stress as 最大屈服应力, melting_temperature as 熔化温度 from mental_material";
model->setQuery(sql,m_db);
ui->display->setModel(model);
}
这是运行后的图片
先检查m_db是不是类的成员,不应该出现这行代码
QSqlDatabase m_db=QSqlDatabase::addDatabase("QSQLITE","material_connect");
至少应该是
m_db=QSqlDatabase::addDatabase("QSQLITE","material_connect");
其次,保证绑定的数据库已经打开。
这个错误是Query绑定数据库没成功,query一直使用的是默认连接。
1、试试加上this,QSqlQueryModel *model=new QSqlQueryModel(this);
2、换一种方式,定义QSqlQuery query(m_db);然后query.setDatabase(m_db)