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();