5Июн/120
[Qt] Запись файла в SQLite
Собственно, всё просто
Создали в БД таблицу с атрибутом типа BLOB:
CREATE TABLE fileTable (id_file integer NOT NULL PRIMARY KEY AUTOINCREMENT, file BLOB NOT NULL);
Потом:
QFile file(QApplication::applicationDirPath().append("/file"));
file.open(QIODevice::ReadOnly); //открыли файл
QByteArray ba = file.readAll(); //прочитали из него всё
QSqlQuery query(QSqlDatabase::database("sql")); //
query.prepare("INSERT INTO fileTable (file) VALUES(:val);"); //создали запрос
query.bindValue ( ":val", ba);
query.exec(); //запустили
file.close(); //файл закрыли
И всё. Ну, естественно, дописали обработку ошибок.
Обратный процесс - чтение файла из SQLite:
QFile file(QApplication::applicationDirPath().append("/newfile"));
file.open(QIODevice::WriteOnly);
QSqlQuery query(QSqlDatabase::database("sql"));
query.prepare("SELECT file FROM fileTable;");
query.exec();
query.next();
QByteArray ba = query.value(0).toByteArray();
file.write(ba);
file.close();