30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
1 | |
Изображения в sqlite13.09.2013, 07:10. Показов 4651. Ответов 21
Метки нет (Все метки)
Вобщем проблема с изображениями в базе данных...
Описывать проблему не буду так как сложновато будет, но попрошу пример вида: есть картинка с путём imgfile есть бд с путём file есть таблица table с колонкой img нужно поместить картинку imgfile в таблицу table в ячеку 1,img затем нужно извлечь картинку и нарисовать её
0
|
13.09.2013, 07:10 | |
Ответы с готовыми решениями:
21
Сохранение изображения в БД SQLite Android: Сохранение и загрузка изображения в/из SQLite Как написать формулы в sqlite или отказаться от использования sqlite вовсе Файл cookies.sqlite не sqlite на самом деле, или как его открыть |
13.09.2013, 10:30 | 2 |
В этом примере есть подобные функции (загрузка картинки в базу данных, извлечение из нее и отображение в окне).
Чем он не подошел?
1
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
13.09.2013, 11:25 [ТС] | 3 |
locm, да, да видел я этот пример но он черезчур мудрёный, да и там размер места освобождаемого в памяти идёт отдельной ячейкой...
Вобщем тот пример нечитабелен для меня, если не трудно то можеш написать код по вышенаписаному образцу?
0
|
13.09.2013, 14:40 | 4 | ||||||||||
Сообщение было отмечено как решение
Решение
То есть нужен пример, чем проще тем лучше?
Тогда вот. Добавление картинки в базу (файл Test.png должен находится в одной папке с прогой).
3
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
15.09.2013, 18:29 [ТС] | 5 |
locm, спасибо, почти помогло: но есть ешё одна неясность,- в склите на сколько я знаю, поля имеют чисто символическую типизацию (то есть в колонку с типом нумерик можно поместить текст) ну и как следствие вышеприведённый код отказывается работать если в колонке есть текст, хотя остальные ячейки имеют формат блоб.
Ну и соответственно просьба: изменить вторую часть кода чтобы она брала в качестве исходного текстовую переменную со значением блоб типа txt.s=??? то есть картинка находится в текстовой переменной. И по возможности нужно определить в переменной текст или блоб.... Сам додуматься пробывал... но как видно безрезультатно....
0
|
15.09.2013, 18:50 | 6 |
Картинка это бинарные данные и их далеко не всегда можно хранить в текстовой переменной, поскольку она нуль-терминированная.
Тип колонки можно узнать используя функцию DatabaseColumnType(). Хотя честно не понимаю какие именно возникли проблемы, ведь в этом коде, в базе хранится как текст, так и бинарные данные (Blob) и проблем не возникает. Лучше выложите ваш код который не работает как задумано.
0
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
15.09.2013, 19:51 [ТС] | 7 |
locm, на врятли я смогу найти версию кода которую пытался "оживить" так как сохраняю только рабочие фрагменты. Что касается функции DatabaseColumnType() то она почемуто всегда возвращает тип "text" вне зависимости от поля,- даже индексные столбцы с автоинкрементом она возвращает как текст, поэтому я решил что определение типа средствами пб невозможно. Но что касается кода то помню что команда DatabaseColumnSize(0, 0) возвращала ноль, где естественно 0,0 были изменены на рабочие. Но и естественно работа данной функции не совсем ясна так как исходя из описания она возвращает размер столбца а не ячейки. При попытке обхода, то есть к примеру принуддительном создании размера освобождаемой памяти в 100 кб код вылетал на следующих строках.
Но буду откровенен,- я совершенно не представляю как работает данный код, поэтому не исключаю вероятность своей ошибки... для меня это абракадабра, в таком случае мб стоит изначально текст определять как блоб а уж затем переводить его в текстовую переменную?
0
|
15.09.2013, 21:29 | 8 | |||||
Наверное что-то не так делаете. Я же не зря просил показать код.
Функция DatabaseColumnType() работает нормально (база данных должна быть создана с помощью этого кода).
http://ru.wikipedia.org/wiki/Н... ная_строка Зачем? Если что-то работает не так, как задумано, то прежде чем искать обходные пути нужно разобраться почему не работает. Возможно причина в ошибке в коде.
0
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
||||||
16.09.2013, 19:56 [ТС] | 9 | |||||
короче я попытался тупо впихнуть твой код в мой, но не полуилось... Добавлено через 4 минуты оо у меня типа озарение,- я из базы беру строку, а не блоб, нужно либо брать блоб либо гденить преобразовывать текст в блоб, то есть нужен ещё один фильтр и соответственно ещё один масив для хранения блоб значений.... но сегодня проверять не буду,- устал неимоверно, еле еле сил на интернет хватает
0
|
16.09.2013, 20:59 | 10 | ||||||||||
В коде нужно после выбора таблицы и перед работой с колонками (ячейками), указать желаемую строку (Row).
Код проверки должен быть внутри этого цикла.
0
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
||||||
19.09.2013, 07:13 [ТС] | 11 | |||||
locm, сделал всё по рекомендациям, но на этот раз функция CatchImageвозвращает ноль...
есть вот такой код
0
|
19.09.2013, 09:55 | 12 | ||||||||||
И не удивительно. В памяти в место данных - мусор (откройте справку и прочитайте описание функций FillMemory() и Val() и поймете почему)!
Более того, из базы даже не извлекаются данные! Должно быть.
0
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
19.09.2013, 10:33 [ТС] | 13 |
locm, извиняюсь конечно, но поправки результата не дали, всё равно ноль... прикрепил код целиком, мб гдето в ином месте накосячил.... а FillMemory от безысходности пытался впихнуть вместо GetDatabaseBlob, так как пример применения GetDatabaseBlob совершенно не похож на то что в справке о ней написано...
Пробовал на разных бд, в смысле на созданых разными программами, положительного эфекта не наблюдается....
0
|
19.09.2013, 11:20 | 14 |
Я конечно тоже извиняюсь, но в выложенном коде (2.pb) нет этого участка кода.
Вообще при разработке программы, нужно понимать что делаете, а не просто подставлять разные команды - а вдруг заработает. Там написано.
1
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
||||||
19.09.2013, 11:46 [ТС] | 15 | |||||
locm, YAHOO заработало, спс. Про GetDatabaseBlob имелось ввиду
На счёт отсутствия кода,- выложил весь код так как думал что напортачил гдето в коде типа дважды переменные использовал и тп, отсутствие же кода объясняется тем что пытаюсь сохранять более-менее рабочие версии. вообщето верно, но если совершенно не представляеш каким образом это сделать, то есть два варианта: либо попытаться применить пример в слепую либо обратиться на форум... ну и мои познания в програмировании не на столько сильны чтобы свободно работать с областями памяти, темболее в новом для меня языке...
0
|
19.09.2013, 16:11 | 16 | |||||
Может этот пример поможет понять как работать с базой. Он показывает все таблицы их содержимое.
1
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
19.09.2013, 19:58 [ТС] | 17 |
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 | 18 | ||||||||||
Имеющийся код не сложно переделать чтобы результат был в массиве. Например, первая процедура.
0
|
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
|
|
19.09.2013, 20:48 [ТС] | 19 |
locm, теперь понятно, но думаю результат лучше в масиве так как с масивом проще работать...
и еще вопрос, но савсем не в тему,- откуда получать значения типа "кодировка таблицы" ,"максимальный вес страницы" и так далее... на сколько я представляю это всй делается по средствам запросов, и в таком случае, если не затруднит можно увидеть список всех возможных запросов? ну и вот такой вопрос,- не знаю даже с какой стороны подойти,- как получить полный список всех возможных системных таблиц?
0
|
19.09.2013, 20:53 | 20 |
Эти вопросы уместнее задавать в этом разделе.
0
|
19.09.2013, 20:53 | |
19.09.2013, 20:53 | |
Помогаю со студенческими работами здесь
20
Sqlite в c++ под linux, как правильно подключить sqlite? Редактирование связанных объектов через EF в SQLite, C#, EF 6.2, SQLite, C# Winforms SQLite for Excel или как выгрузить данные в SQLite SQLite не найден SQLite.Interop,dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
|
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
|