сохранить в бд через QSqlDatabase надо использовать QSqlQuery запрос
открываем документацию и видим
bindValue, позволяет добавлять параметры указанного типа
ParamType - QSql::Binary
Мне очень лень было искать или писать код поэтому попросил chatgpt, по сути он верный, может есть какие то нюансы или неточности, исправляются документацией
spoiler#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QFile>
#include <QByteArray>
void writeBinaryData(const QString &filePath) {
// Создаем объект базы данных
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("my_database.db");
// Открываем базу данных
if (!db.open()) {
qDebug() << "Не удалось открыть базу данных";
return;
}
// Создаем объект QSqlQuery для выполнения запросов к базе данных
QSqlQuery query;
// Создаем таблицу, если она еще не существует
query.exec("CREATE TABLE IF NOT EXISTS my_table (id INTEGER PRIMARY KEY, data BLOB)");
// Открываем файл
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Не удалось открыть файл";
return;
}
// Читаем все данные из файла
QByteArray fileData = file.readAll();
// Закрываем файл
file.close();
// Готовим запрос на вставку данных в таблицу
query.prepare("INSERT INTO my_table (data) VALUES (:data)");
// Привязываем двоичные данные к запросу
query.bindValue(":data", fileData);
// Выполняем запрос
if (!query.exec()) {
qDebug() << "Не удалось выполнить запрос";
return;
}
qDebug() << "Данные успешно записаны в базу данных";
}
p.s. пожалуйста, не издевайтесь над сервером, пользователями, администраторами и здравым смыслом.
Не храните файлы в базе данных! Только очень большая нужда может заставить так поступать, а уж если файлы имеют большой размер, то мало какое железо адекватно потянет такое 'решение'