Сохранение картинок в Firebird

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

Привет всем !

Пробую работать с Firebird и опять возник детский вопрос ....
Подскажите пожалуйста, как сохранить картинку (документ, любой бинарный файл) в БД Firebird ?
И потом ее оттуда вытащить из под Clarion ?

Поле c типом IMAGE создал, а что далее делать не пойму ... в ODBC драйвере нет BLOB поля.
Не загонять же бинарный файл в строку и записывать ее в IMAGE ... :(
К тому же наверняка есть ограничение по длине строки в драйвере ODBC.

Заранее спасибо за помощь !
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сохранение картинок в Firebird

Сообщение Дед Пахом »

Игорь Столяров писал(а): в ODBC драйвере нет BLOB поля.
Это как?
Вложения
Odbc_Blob.png
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

Упс ! Спасибо - это уже вариант. Буду пробовать.
Перепутал BLOB с MEMO полем (перевожу БД с Btrieve на Firebird, в Btrieve BLOB полей точно нет).

Тогда переформулирую вопрос по другому.
Можно ли добавлять в БД FireBird картинки напрямую командой ODBCFile{Prop:SQL} = 'INSERT INTO ....'
или что-то вроде этого и получать через SELECT ?
За теми кто отстал - не возвращаться. (С) Кодекс
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Сохранение картинок в Firebird

Сообщение Yufil »

Я добавлял в MS SQL-сервер под CW5. В базе данных был Blob, но драйвера его не видели.
Что-то вроде 'Insert into table(keyfield,blobfield) values(1,0hf0f1.......)', где второе поле вводится как шестнадцатеричное представление. Получалась SQL-команда достаточно нехилого размера, но всё работало.

Для этого делал версию своего класса для работы с длинными строками CSTR с соответствующей функцией.
Примерно так

S Cstr
Request Cstr
...
S.loadfromfile('file.jpg')
S.toHex('0H')
Request.set('insert into table(Keyfield1, Blobfield) values(1,' & S.S & ')'
Images{Prop:Sql} = Request.s

Как всегда - если нужно, поищу...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

Спасибо. Идея с трансформацией бинарного файла в текстовую строку и далее ее запись в SQL понятна,
с реализацией такой схемы проблем нет. Но здесь точно есть ограничение на число символов в инструкции SQL.
Для MS SQL - это 64 KByte, думаю что для Firebird значительно меньше. К тому же преобразование бинарной
строки в текст (в тот же BASE64) значительно увеличит ее размер и потребуется обратная трансформация
при считывании ...

Неужели современная наука не знает способа работы с бинарными данными в связке Clarion & SQL ? :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сохранение картинок в Firebird

Сообщение Admin »

В Firebird 3 вроде увеличили до 10mb, не? :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

Admin писал(а):В Firebird 3 вроде увеличили до 10mb, не?
Я не настолько хорошо знаю Firebird ... Только пробую с ним работать ...
В любом случае, преобразованией бинарных данных в текстовые строки - не решает вопрос.
Почитал интернет - там вроде бы загрузка бинарных данных (файлов) в BLOB поля SQL БД должна выполняться
через STREAM (работа с потоками). С какой стороны к этому подлезть из Clarion - непонятно ... :(

Кажется, как только мы выходим за пределы задачи гонять строки и дата-таймы из Clarion в SQL - то получаем проблемы ...
А задача в общем-то элементарна: хранение в БД и работа с картинками, документами и т.д. Неожиданно. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Сохранение картинок в Firebird

Сообщение Yufil »

Вряд ли для MS SQL такие ограничения, я писал TIFF-сканы документов, там точно сотни килобайт были и никаких особых возражений не было.
А вот загрузить оказалось гораздо проблематичнее, пришлось нарезать блоб на части, а потом склеивать...
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Сохранение картинок в Firebird

Сообщение Yufil »

Я в 2004 и 2006 годах переводил пару приложений из Delphi-Interbase в Кларион, успешно читал блобы с картинками и документами через стандартный odbc драйвер
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

Yufil писал(а): успешно читал блобы с картинками и документами через стандартный odbc драйвер
Ура ! Именно это и надо. А не подскажите, как это можно сделать ? Заранее спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Сохранение картинок в Firebird

Сообщение kreator »

Похоже действительно ограничение на размер есть. Игорь, посмотри вот здесь - http://www.ibexpert.net/ibe/index.php?n ... aFromAFile. Может поможет. Мы не храним картинки в базе, сделали отдельное хранилище. База вырастет не контролируемо. Что потом с ней делать? Да и ограничение по размеру...
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

kreator писал(а): Мы не храним картинки в базе, сделали отдельное хранилище.
Спасибо. Буду разбираться.
Здесь ведь вопрос в чем ... Есть некая БД с доступом по IP адресу. Мы можем получать из нее данные по запросам.
Я ведь не могу получать по IP адресу некий файл с данными из папки на этом компьютере ....
Как-то неожиданно возникла проблема. Весь интернет хранит картинки и документы в блобах.
За теми кто отстал - не возвращаться. (С) Кодекс
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Сохранение картинок в Firebird

Сообщение Yufil »

А почему не можешь? Если папку на сервере определить как виртуальный каталог, то пожалуйста.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Сохранение картинок в Firebird

Сообщение Игорь Столяров »

Yufil писал(а): Если папку на сервере определить как виртуальный каталог
Я такого делать не умею .... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сохранение картинок в Firebird

Сообщение Дед Пахом »

Про FileToBlob/BlobToFile никогда не слышал?
С уважением, ДП
Ответить