Сохранение картинок в Firebird
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Привет всем !
Пробую работать с Firebird и опять возник детский вопрос ....
Подскажите пожалуйста, как сохранить картинку (документ, любой бинарный файл) в БД Firebird ?
И потом ее оттуда вытащить из под Clarion ?
Поле c типом IMAGE создал, а что далее делать не пойму ... в ODBC драйвере нет BLOB поля.
Не загонять же бинарный файл в строку и записывать ее в IMAGE ...
К тому же наверняка есть ограничение по длине строки в драйвере ODBC.
Заранее спасибо за помощь !
Пробую работать с Firebird и опять возник детский вопрос ....
Подскажите пожалуйста, как сохранить картинку (документ, любой бинарный файл) в БД Firebird ?
И потом ее оттуда вытащить из под Clarion ?
Поле c типом IMAGE создал, а что далее делать не пойму ... в ODBC драйвере нет BLOB поля.
Не загонять же бинарный файл в строку и записывать ее в IMAGE ...
К тому же наверняка есть ограничение по длине строки в драйвере ODBC.
Заранее спасибо за помощь !
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3136
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 31 раз
- Контактная информация:
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Упс ! Спасибо - это уже вариант. Буду пробовать.
Перепутал BLOB с MEMO полем (перевожу БД с Btrieve на Firebird, в Btrieve BLOB полей точно нет).
Тогда переформулирую вопрос по другому.
Можно ли добавлять в БД FireBird картинки напрямую командой ODBCFile{Prop:SQL} = 'INSERT INTO ....'
или что-то вроде этого и получать через SELECT ?
Перепутал BLOB с MEMO полем (перевожу БД с Btrieve на Firebird, в Btrieve BLOB полей точно нет).
Тогда переформулирую вопрос по другому.
Можно ли добавлять в БД FireBird картинки напрямую командой ODBCFile{Prop:SQL} = 'INSERT INTO ....'
или что-то вроде этого и получать через SELECT ?
За теми кто отстал - не возвращаться. (С) Кодекс
Сохранение картинок в Firebird
Я добавлял в 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
Как всегда - если нужно, поищу...
Что-то вроде '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
Как всегда - если нужно, поищу...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Спасибо. Идея с трансформацией бинарного файла в текстовую строку и далее ее запись в SQL понятна,
с реализацией такой схемы проблем нет. Но здесь точно есть ограничение на число символов в инструкции SQL.
Для MS SQL - это 64 KByte, думаю что для Firebird значительно меньше. К тому же преобразование бинарной
строки в текст (в тот же BASE64) значительно увеличит ее размер и потребуется обратная трансформация
при считывании ...
Неужели современная наука не знает способа работы с бинарными данными в связке Clarion & SQL ?
с реализацией такой схемы проблем нет. Но здесь точно есть ограничение на число символов в инструкции SQL.
Для MS SQL - это 64 KByte, думаю что для Firebird значительно меньше. К тому же преобразование бинарной
строки в текст (в тот же BASE64) значительно увеличит ее размер и потребуется обратная трансформация
при считывании ...
Неужели современная наука не знает способа работы с бинарными данными в связке Clarion & SQL ?
За теми кто отстал - не возвращаться. (С) Кодекс
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 27 раз
- Поблагодарили: 22 раза
- Контактная информация:
Сохранение картинок в Firebird
В Firebird 3 вроде увеличили до 10mb, не?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Я не настолько хорошо знаю Firebird ... Только пробую с ним работать ...Admin писал(а):В Firebird 3 вроде увеличили до 10mb, не?
В любом случае, преобразованией бинарных данных в текстовые строки - не решает вопрос.
Почитал интернет - там вроде бы загрузка бинарных данных (файлов) в BLOB поля SQL БД должна выполняться
через STREAM (работа с потоками). С какой стороны к этому подлезть из Clarion - непонятно ...
Кажется, как только мы выходим за пределы задачи гонять строки и дата-таймы из Clarion в SQL - то получаем проблемы ...
А задача в общем-то элементарна: хранение в БД и работа с картинками, документами и т.д. Неожиданно.
За теми кто отстал - не возвращаться. (С) Кодекс
Сохранение картинок в Firebird
Вряд ли для MS SQL такие ограничения, я писал TIFF-сканы документов, там точно сотни килобайт были и никаких особых возражений не было.
А вот загрузить оказалось гораздо проблематичнее, пришлось нарезать блоб на части, а потом склеивать...
А вот загрузить оказалось гораздо проблематичнее, пришлось нарезать блоб на части, а потом склеивать...
Сохранение картинок в Firebird
Я в 2004 и 2006 годах переводил пару приложений из Delphi-Interbase в Кларион, успешно читал блобы с картинками и документами через стандартный odbc драйвер
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Ура ! Именно это и надо. А не подскажите, как это можно сделать ? Заранее спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4994
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Сохранение картинок в Firebird
Похоже действительно ограничение на размер есть. Игорь, посмотри вот здесь - http://www.ibexpert.net/ibe/index.php?n ... aFromAFile. Может поможет. Мы не храним картинки в базе, сделали отдельное хранилище. База вырастет не контролируемо. Что потом с ней делать? Да и ограничение по размеру...
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Спасибо. Буду разбираться.
Здесь ведь вопрос в чем ... Есть некая БД с доступом по IP адресу. Мы можем получать из нее данные по запросам.
Я ведь не могу получать по IP адресу некий файл с данными из папки на этом компьютере ....
Как-то неожиданно возникла проблема. Весь интернет хранит картинки и документы в блобах.
За теми кто отстал - не возвращаться. (С) Кодекс
Сохранение картинок в Firebird
А почему не можешь? Если папку на сервере определить как виртуальный каталог, то пожалуйста.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7398
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
Сохранение картинок в Firebird
Я такого делать не умею ....
За теми кто отстал - не возвращаться. (С) Кодекс