query.value(1) //тут лежит файл в бд, как его правильно вытащить и сохранить в текущем каталоге?
}
я это представлял как некий конструктор у QFile из QByteArray, т.к. query может value конвертировать в этот тип, но такого конструктора нет у QFile. Подскажите в какую сторону искать?
А что представляет из себя файл в бд? Если просто текст, то доставай текст из бд, создавай файл и пиши в файл
там может быть любой файл, ексель или пдф, например. тип столбца в БД - "вложение" вроде разобрался, QSaveFile file и потом метод write принимает QByteArray все работает
достаешь QbyteArray и у QFile вызываешь write https://doc.qt.io/qt-5/qiodevice.html#write-2
сперва все работало, но сейчас файлы просто 1кб и не открываются. почему в них нет данных? QSqlQuery query(db); query.exec("SELECT * FROM OffersList"); while(query.next()){ QString filename=query.value(1).toString(); QByteArray data; QSaveFile file("C:\\stbuilder\\"+filename); file.open(QIODevice::WriteOnly); data=query.value(1).toByteArray(); file.write(data); file.commit(); qDebug()<<"file \""<<filename<<"\" downloaded!"; }
так ты имя и сам файл с одного места достаешь из бд
так файл лежит в столбце с индексом 1, нет отдельного столбца с файлом и отдельного с именем файла, когда я value(1).toString() вызывал, он возвращал имя файла а этот же value(1).toByteArray() записывает содержимое?
Глянь в дебаге что в byteArray находится и поймешь что к чему
ну смотри на каком месте у тебя теряются данные, что возвращает write, и вообще какая ошибка в errorString
ну да, вы правы, из в QByteArray data просто название файла. тогда я не понимаю как из query записать файл? что я сделал не так
мне кажется надо разобраться в бд и узнать что и где лежит
MS Access, тип столбца "вложение", внутри вот файл добавлен и его имя вытаскивается только при обращении к value(1) а как файл получить...
думаю это специфика ms access, наверное проже будет спросить у людей кто с ней хорошо знаком или использовать другую бд
Обсуждают сегодня