|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
Изображения в sqlite13.09.2013, 07:10. Показов 4983. Ответов 21
Метки нет (Все метки)
Вобщем проблема с изображениями в базе данных...
Описывать проблему не буду так как сложновато будет, но попрошу пример вида: есть картинка с путём imgfile есть бд с путём file есть таблица table с колонкой img нужно поместить картинку imgfile в таблицу table в ячеку 1,img затем нужно извлечь картинку и нарисовать её
0
|
|
| 13.09.2013, 07:10 | |
|
Ответы с готовыми решениями:
21
Сохранение изображения в БД SQLite Android: Сохранение и загрузка изображения в/из SQLite Как написать формулы в sqlite или отказаться от использования sqlite вовсе |
|
|
|
| 13.09.2013, 10:30 | |
|
В этом примере есть подобные функции (загрузка картинки в базу данных, извлечение из нее и отображение в окне).
Чем он не подошел?
1
|
|
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
| 13.09.2013, 11:25 [ТС] | |
|
locm, да, да видел я этот пример но он черезчур мудрёный, да и там размер места освобождаемого в памяти идёт отдельной ячейкой...
Вобщем тот пример нечитабелен для меня, если не трудно то можеш написать код по вышенаписаному образцу?
0
|
|
|
|
|||||||||||
| 13.09.2013, 14:40 | |||||||||||
Сообщение было отмечено как решение
Решение
То есть нужен пример, чем проще тем лучше?
Тогда вот. Добавление картинки в базу (файл Test.png должен находится в одной папке с прогой).
3
|
|||||||||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
| 15.09.2013, 18:29 [ТС] | |
|
locm, спасибо, почти помогло: но есть ешё одна неясность,- в склите на сколько я знаю, поля имеют чисто символическую типизацию (то есть в колонку с типом нумерик можно поместить текст) ну и как следствие вышеприведённый код отказывается работать если в колонке есть текст, хотя остальные ячейки имеют формат блоб.
Ну и соответственно просьба: изменить вторую часть кода чтобы она брала в качестве исходного текстовую переменную со значением блоб типа txt.s=??? то есть картинка находится в текстовой переменной. И по возможности нужно определить в переменной текст или блоб.... Сам додуматься пробывал... но как видно безрезультатно....
0
|
|
|
|
|
| 15.09.2013, 18:50 | |
|
Картинка это бинарные данные и их далеко не всегда можно хранить в текстовой переменной, поскольку она нуль-терминированная.
Тип колонки можно узнать используя функцию DatabaseColumnType(). Хотя честно не понимаю какие именно возникли проблемы, ведь в этом коде, в базе хранится как текст, так и бинарные данные (Blob) и проблем не возникает. Лучше выложите ваш код который не работает как задумано.
0
|
|
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
||
| 15.09.2013, 19:51 [ТС] | ||
|
locm, на врятли я смогу найти версию кода которую пытался "оживить" так как сохраняю только рабочие фрагменты. Что касается функции DatabaseColumnType() то она почемуто всегда возвращает тип "text" вне зависимости от поля,- даже индексные столбцы с автоинкрементом она возвращает как текст, поэтому я решил что определение типа средствами пб невозможно. Но что касается кода то помню что команда DatabaseColumnSize(0, 0) возвращала ноль, где естественно 0,0 были изменены на рабочие. Но и естественно работа данной функции не совсем ясна так как исходя из описания она возвращает размер столбца а не ячейки. При попытке обхода, то есть к примеру принуддительном создании размера освобождаемой памяти в 100 кб код вылетал на следующих строках.
Но буду откровенен,- я совершенно не представляю как работает данный код, поэтому не исключаю вероятность своей ошибки...
0
|
||
|
|
||||||||||
| 15.09.2013, 21:29 | ||||||||||
|
Функция DatabaseColumnType() работает нормально (база данных должна быть создана с помощью этого кода).
0
|
||||||||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
||||||
| 16.09.2013, 19:56 [ТС] | ||||||
короче я попытался тупо впихнуть твой код в мой, но не полуилось... Добавлено через 4 минуты оо у меня типа озарение,- я из базы беру строку, а не блоб, нужно либо брать блоб либо гденить преобразовывать текст в блоб, то есть нужен ещё один фильтр и соответственно ещё один масив для хранения блоб значений.... но сегодня проверять не буду,- устал неимоверно, еле еле сил на интернет хватает
0
|
||||||
|
|
||||||||||||
| 16.09.2013, 20:59 | ||||||||||||
|
В коде нужно после выбора таблицы и перед работой с колонками (ячейками), указать желаемую строку (Row).
Код проверки должен быть внутри этого цикла.
0
|
||||||||||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
||||||
| 19.09.2013, 07:13 [ТС] | ||||||
|
locm, сделал всё по рекомендациям, но на этот раз функция CatchImageвозвращает ноль...
есть вот такой код
0
|
||||||
|
|
|||||||||||||
| 19.09.2013, 09:55 | |||||||||||||
|
Более того, из базы даже не извлекаются данные! Должно быть.
0
|
|||||||||||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
| 19.09.2013, 10:33 [ТС] | |
|
locm, извиняюсь конечно, но поправки результата не дали, всё равно ноль... прикрепил код целиком, мб гдето в ином месте накосячил.... а FillMemory от безысходности пытался впихнуть вместо GetDatabaseBlob, так как пример применения GetDatabaseBlob совершенно не похож на то что в справке о ней написано...
Пробовал на разных бд, в смысле на созданых разными программами, положительного эфекта не наблюдается....
0
|
|
|
|
||||
| 19.09.2013, 11:20 | ||||
|
Вообще при разработке программы, нужно понимать что делаете, а не просто подставлять разные команды - а вдруг заработает.
1
|
||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|||||||
| 19.09.2013, 11:46 [ТС] | |||||||
|
locm, YAHOO заработало, спс. Про GetDatabaseBlob имелось ввиду
На счёт отсутствия кода,- выложил весь код так как думал что напортачил гдето в коде типа дважды переменные использовал и тп, отсутствие же кода объясняется тем что пытаюсь сохранять более-менее рабочие версии.
0
|
|||||||
|
|
||||||
| 19.09.2013, 16:11 | ||||||
|
Может этот пример поможет понять как работать с базой. Он показывает все таблицы их содержимое.
1
|
||||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
| 19.09.2013, 19:58 [ТС] | |
|
locm, Пример смахивает на заготовку библиотеки, ну и прокоментирую его с нубского взгляда и с расчётом того что это когда либо станет библиотекой,-
1) первая процедура которая нужна это получение списка юзерских таблиц (то есть с вычетом системных) и как я понимаю результат нужен в масиве 2) вторая процедура должна возвращать список столбцов таблицы по ходу тоже в масиве 3) третья, желательно получить список типов, соответствующих масиву имён столбцов таблицы 4) нужен масив строки, то есть по запросу procedure(db,num) возвращается масив или лист строки 5) нужен масив столбца, то есть по запросу типа procedure(db,num) или procedure(db,name) возвращается масив столбца 6) процедура по возвращению ячейки типа procedure(num,num) или procedure(num,name) возвращает переменную и её тип 7) ну и завершающий этап это фильтр ввода переменной, то есть допустим тип столбца "текст" но пользователь вводит блоб то должно высвечиваться предупреждение. И отказ в принятии переменной если тип столбца не приемлит её.(типа нум не приемлит текст) 8) ну и былобы вааще шикарно еслибы была процедура по возврату изображения из столбцов разного типа. (то есть суть темы решена на половину,- склтитепрофесионал прячет картинки в формате quad которые я не могу увидеть) 9) опционально. получить в результате список системных таблиц 10) ну и выбор кодировки, тоже не помешает... 11) ну и какой-никакой вывод ошибок тоже не лишний, если в нутри процедуры попытаться устранить ошибку, типа переход к следующему драйверу (или как его там) по работе с базами ну вот как то так по моему должна выглядеть библа по работе с склите..... в примере же, к примеру TableView(Database, Gadget, Table.s) непонятно что под гаджетом понимается...то есть суть моего поста, пойми правильно, не в коем случае не критикую, но есть мелкие недоработки из-за которых данный код будет пылиться как образец. но всётаки бы хотелось бы иметь библу которую будет удобно использовать всем кто хоть поверхностно знаком с таблицами. данный же код сложен, по крайней мере для меня так как ещё нет полуночи возможно по тому что он использовался как составная часть иного кода, либо по недостаточным комментам....
0
|
|
|
|
|||||||||||||
| 19.09.2013, 20:41 | |||||||||||||
0
|
|||||||||||||
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
| 19.09.2013, 20:48 [ТС] | |
|
locm, теперь понятно, но думаю результат лучше в масиве так как с масивом проще работать...
и еще вопрос, но савсем не в тему,- откуда получать значения типа "кодировка таблицы" ,"максимальный вес страницы" и так далее... на сколько я представляю это всй делается по средствам запросов, и в таком случае, если не затруднит можно увидеть список всех возможных запросов? ну и вот такой вопрос,- не знаю даже с какой стороны подойти,- как получить полный список всех возможных системных таблиц?
0
|
|
|
|
|
| 19.09.2013, 20:53 | |
|
Эти вопросы уместнее задавать в этом разделе.
0
|
|
| 19.09.2013, 20:53 | |
|
Помогаю со студенческими работами здесь
20
Файл cookies.sqlite не sqlite на самом деле, или как его открыть
Редактирование связанных объектов через EF в SQLite, C#, EF 6.2, SQLite, C# Winforms SQLite for Excel или как выгрузить данные в SQLite SQLite не найден SQLite.Interop,dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|