bool SymbolManager::openDatabase(const QString &path) {
QString connectionName = "myConnection";
if(QSqlDatabase::contains(connectionName)) {
db = QSqlDatabase::database(connectionName);
} else {
db = QSqlDatabase::addDatabase("QSQLITE", connectionName);
}
db.setDatabaseName("Symbol.db");
if (!db.open()) {
qDebug() << "无法打开数据库:" << db.lastError().text();
return false;
}else{
qDebug() <<"成功打开数据库";
}
return true;
}
QByteArray SymbolManager::getSvgData(const QString &name) {
QSqlQuery query(db);
query.prepare("SELECT images_name FROM symbols WHERE name = :name");
query.bindValue(":name", name);
if (query.exec() && query.next()) {
return query.value(0).toByteArray();
}
return QByteArray();
}
其中QSqlquery query(db), 指定数据库绑定这一步可以解决QSqlQuery::prepare: database not open这一报错。