Название: [РЕШЕНО] Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 04:13 использую QSQLite
хочу записать файл в БД, разные, есть картинки, есть текстовики, есть exe'шники таблица создана правильно поле BLOB пробывал записывать так: Код
файлы с текстом записываются нормально, а вот другие непонять как, записываются первые несколько символов. пните в правильном направлении... Название: Re: Как записать файл в Базу Отправлено: ieroglif от Май 13, 2011, 04:17 Код
Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 04:23 та же самая петрушка... =(
Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 08:20 Как я понял.
Пример с верху работает корректно. Проблема записи в БД и чтения оттуда именно этого QByteArray я таблицу создаю так: Код
пишу туда так: Код
вот b криво и записываетя, неполностью читаю так: Код
задача взять файл засунуть в базу, вытащить из базы, записать новый файл. (PNG DOC EXE ...) Название: Re: Как записать файл в Базу Отправлено: Пантер от Май 13, 2011, 08:56 Конечно фигня писаться будет. Используй prepare и bindValue.
Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 09:14 можно пример?
Название: Re: Как записать файл в Базу Отправлено: Пантер от Май 13, 2011, 09:17 А в ассистент заглянуть?
Код
Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 09:34 Изначально я делал так. Потом где-то нагуглил что делать лучше подругому (как у меня в примере) =(((.
Да всё работает корректно. Извиняюсь за наглость. Но в асистенте и в гугле нет внятного ответа как вытаскивать данные. Может подскажите? Название: Re: Как записать файл в Базу Отправлено: Пантер от Май 13, 2011, 09:40 Может лучше перед сохранением перегонять в base64 и при извлечении делать обратное преобразование?
Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 09:48 засунуть
Код выдаёт ошибку "within this context" вытащить Код
Я правильно Вас понял? Название: Re: Как записать файл в Базу Отправлено: Пантер от Май 13, 2011, 09:52 qint64 bb - это тут при чем?
QByteArray QByteArray::toBase64 () const Извлечь: const QByteArray z=QByteArray::fromBase64 (q.value(2).toByteArray()); Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 10:14 Всё работает. Всё пишет.
Проблема в том, что пишет не то =) Текстовики нормально переписываются, а вот картинки и прочее уже не открываются =( Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 10:17 ой извиняюсь. мой косяк, при записи не тот флаг тыкал =)
Название: Re: Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 10:20 Спасибо всем!
Итак итог: Пишем файл в базу: Код
Читаем файл из базы: Код
Название: Re: [РЕШЕНО] Как записать файл в Базу Отправлено: LisandreL от Май 13, 2011, 13:58 Изначально я делал так. Потом где-то нагуглил что делать лучше подругому (как у меня в примере. Верный путь к sql-инъекциям.q.exec("SELECT * FROM tbl WHERE Patch='"+puts+"' ;"); Пишите как вам посоветовали:Код
В Base64 тоже смысла переводить нет. Размер это увеличивает, а работать оно и без этого будет. Вот пример (blob.sqlite должно быть в рабочей папке): Название: Re: [РЕШЕНО] Как записать файл в Базу Отправлено: Mish_ka от Май 13, 2011, 14:16 Пасибо
Название: Re: Как записать файл в Базу Отправлено: andrew.k от Май 13, 2011, 15:56 Может лучше перед сохранением перегонять в base64 и при извлечении делать обратное преобразование? А чем это лучше? Только увеличит размер данных.Название: Re: [РЕШЕНО] Как записать файл в Базу Отправлено: Пантер от Май 13, 2011, 15:58 Может лучше перед сохранением перегонять в base64 и при извлечении делать обратное преобразование? А чем это лучше? Только увеличит размер данных.Название: Re: [РЕШЕНО] Как записать файл в Базу Отправлено: kolob от Декабрь 01, 2011, 17:15 Делаю все также как написано выше, выдает ошибку:
Цитировать ERROR: invalid input syntax for type oid: "\xd0cf11e0a1b11ae10000000.....00000000" LINE 1: EXECUTE qpsqlpstmt_1 ('Файл.doc', '\xd0cf11e0a1b11ae100000... ^ QPSQL: Unable to create query Подскажите в чем проблема. На форуме чего то подобного не нашел. |