QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "connect"); db.setDatabaseName("D://Qt//PUI//config.db"); // 使用正斜杠表示路径分隔符 if (!db.open()) { qDebug() << "数据库文件打开失败"; qDebug() << db.lastError().text(); // 输出错误信息 return; } qDebug() << "open success!" << db.isOpen() << db.driverName(); QSqlQuery query("connect"); query.prepare("SELECT * FROM config"); query.exec(); 这段代码会出现QSqlQuery::exec: database not open, 但是下面这一段却能正常运行 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //数据库驱动 db.setDatabaseName(path); if(!db.open()){ qDebug() <<" 打开失败 " <<QSqlDatabase::drivers(); return Output; } QSqlQuery query; //查询容器 query.prepare("SELECT * FROM CONFIG"); query.exec();
时间: 2024-04-18 08:31:43 浏览: 160
Clint_MYSQL.zip_Linux/Unix编程_QT_
出现QSqlQuery::exec: database not open 错误可能是因为数据库连接未成功打开。请确保以下几点:
1. 确保数据库驱动已正确添加。在第一个代码片段中,你使用了带有自定义连接名称的 `addDatabase` 函数,确保在代码中使用该连接名称进行查询。在第二个代码片段中,只使用了默认的连接,所以不需要指定连接名称。
2. 检查数据库文件路径是否正确。在第一个代码片段中,你使用了绝对路径来设置数据库文件名,确保该路径指向正确的文件位置。在第二个代码片段中,你使用了一个变量 `path` 来设置数据库文件名,请确保该变量的值是正确的路径。
3. 检查数据库是否成功打开。在第一个代码片段中,你使用了自定义连接名称来打开数据库,并在打开失败时输出错误信息。请确保数据库成功打开并不返回错误。
如果问题仍然存在,请检查数据库驱动是否正确安装和配置,并确保数据库文件没有被其他进程占用。
阅读全文