0

I want to add a picture in my SQLite database, but on query execution i had this message : "Unable to fetch row".

I tried to create an sqlite extension, named mod_fileio.dll. On application satrtup, i do the following code, but now the message is "Driver not loaded".

void DatabasePool::add_database(uint bdd_id, QString bdd_path) {
    remove_database(bdd_id);
    if(QFile::exists(bdd_path) == true) {
        _DATABASES.insert(bdd_id, QSqlDatabase::addDatabase("QSQLITE", DatabasePool::_DB_NAMES[bdd_id]));
        _DATABASES[bdd_id].setDatabaseName(bdd_path);

        _DATABASES[bdd_id].open();
        if(_DATABASES[bdd_id].isOpen() == false) {
            QString msg = QString("Cannot open database [%1] from %2").arg(DatabasePool::_DB_NAMES[bdd_id]).arg(bdd_path);
            LOG(msg.toStdString(), ERROR);
            remove_database(bdd_id);
        } else {
            QString msg = QString("Database [%1] added").arg(DatabasePool::_DB_NAMES[bdd_id]);
            LOG(msg.toStdString(), INFO);
        }

        QVariant v = _DATABASES[bdd_id].driver()->handle();
        if(v.isValid() && qstrcmp(v.typeName() , "sqlite3*") == 0) {
            sqlite3_initialize();
            sqlite3* db_handle = *static_cast<sqlite3**>(v.data());
            if(db_handle != nullptr) {
                sqlite3_enable_load_extension(db_handle, 1);
                QSqlQuery query;
                query.exec("SELECT load_extension('mod_fileio')");
                if(query.lastError().isValid())  {
                    QString msg = QString("Error cannot load sqlite extension : %1").arg(query.lastError().text());
                    LOG(msg.toStdString(), ERROR);
                }
            } else {
                LOG("Cannot handling database !!!", ERROR);
            }
        }

    } else {
        QString msg = QString("No [%1] database available. File {%2} not exist!!!").arg(DatabasePool::_DB_NAMES[bdd_id]).arg(bdd_path);
        LOG(msg.toStdString(), ERROR);
    }
}

Can you help me ?

0 Answers0