Прошу помочь с сохранением картинки в базе данных MySQL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Peter
незнакомец
Сообщения: 4
Зарегистрирован: 05.07.2010 15:15:23

Прошу помочь с сохранением картинки в базе данных MySQL

Сообщение Peter »

Прочитал весь форум ответа так и не нашел, все те куски кода которые есть на разных сайтах у меня не работают:
http://www.sql.ru/Forum/actualthread.as ... 441342&hl=
http://www.delphisources.ru/pages/faq/b ... field.html
http://forum.lazarus.freepascal.org/ind ... pic=7890.0
viewtopic.php?f=5&t=5939&p=43448
и т.д.

Есть:
Lazarus 0.9.28.2
база MySQL 5 с таблицей fio , в ней поле BLOB

Пробовал и с DBImage и просто грузил картинки в Image через разные Stream и пытался записывать в базу данных, никак... или дает ошибки или же делает вид что все ок, а на самом деле в базе пусто.
Базу смотрю MySQL Administrator.
если в базу через MySQL Administrator записать картинку, то показывает изображение.

пробовал разные форматы и только битмапы и jpg и т.д., никакие у меня не записываются.

В MySQL я новичок, это первая программа которую пишу используя данный движок, может я что то не так в самой базе сделал?
Прошу помочь реальным кодом. Заранее спасибо.
yurgel
новенький
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58

Сообщение yurgel »

загружать рисунок надо не в Image (DBImage), а в поле соответствующей таблицы.

в интербэйзовскую базу картинку из файла я загружал так:

Код: Выделить всё

  if OpenPicDlg.Execute then begin
    dsScreenshot.DataSet.Insert;
    dsScreenshot.DataSet.FieldByName ('SCREENSHOT_NAME').AsString := ExtractFileNameOnly (OpenPicDlg.FileName);
    (dsScreenshot.DataSet.FieldByName ('SCREENSHOT_IMAGE') as TBlobField).LoadFromFile (OpenPicDlg.FileName);
    dsScreenshot.DataSet.Post;
  end;
Peter
незнакомец
Сообщения: 4
Зарегистрирован: 05.07.2010 15:15:23

Сообщение Peter »

делаю так:
procedure TFIOEditForm.BitBtn3Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute = true then
begin
ShowMessage(OpenPictureDialog1.FileName);
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
DM.SQLQueryFIO.Edit;
(DM.SQLQueryFIO.FieldByName ('Image') as TBlobField).LoadFromFile (OpenPictureDialog1.FileName);
DM.SQLQueryFIO.Post;
DM.SQLQueryFIO.ApplyUpdates;
end;
end;
реакции никакой, в базу ничего не записывает, делал и по другому, через stream запихивал данные и пытался через DBImage. то ошибки вылетают, то вроде код весь исполняется, а в базе пусто.
yurgel
новенький
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58

Сообщение yurgel »

а какие компоненты доступа используются? стандартный TSQLQuery? попробуйте Zeos, например.
Peter
незнакомец
Сообщения: 4
Зарегистрирован: 05.07.2010 15:15:23

Сообщение Peter »

Понимаете, не хотелось бы использовать другие компоненты кроме стандартных, использую SQLdb, SQLConnection, SнQLQuery, DataSource
Кто успешно смог записать в базу данных MySQL изображение с помощью Lazarus`а? поделитесь рабочим куском кода пожалуйста.
yurgel
новенький
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58

Сообщение yurgel »

я лично грешу на сам TSQLQuery :) могу и ошибаться, конечно.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

yurgel писал(а):я лично грешу на сам TSQLQuery :) могу и ошибаться, конечно.


Не заморачивайся вынеси этот кусок кода в подпрограмму и оформи через Zeos , я тоже когда то пробовал стандарными но из-за куч недопилов плюнул и перешол на Zeos, там конечно тоже хватает но плюсов больше
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Не заморачивайся вынеси этот кусок кода в подпрограмму и оформи через Zeos , я тоже когда то пробовал стандарными но из-за куч недопилов плюнул и перешол на Zeos, там конечно тоже хватает но плюсов больше

Не надо такое советовать :) Кто тогда будет вылизывать SQLDB-код, марсиане что-ли ? А тут как раз случай вылизать и оттестировать.
Peter
незнакомец
Сообщения: 4
Зарегистрирован: 05.07.2010 15:15:23

Сообщение Peter »

Всем спасибо.
Стал использовать Zeos и все получилось.
Попробую запостить ошибку на сайте Лазаруса, но не силен в английском.
Жаль что стандартные компоненты все таки не работают.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

debi12345 писал(а):Не надо такое советовать :) Кто тогда будет вылизывать SQLDB-код, марсиане что-ли ? А тут как раз случай вылизать и оттестировать.


Зашибись, давайте посоветуем человеку самому пройтись по граблям, и сделаем из него бетатестера, ну если конечно ему прям так хочется пускай,какую дорогу ему выбрать это его личное дело главное это ему дать список альтернатив(а раз вы уважаемый такой идеалист то почему бы вам лично своими руками не поучаствовать, слов нету сами будем рады,и спасибо скажем)
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Зашибись, давайте посоветуем человеку самому пройтись по граблям, и сделаем из него бетатестера, ну если конечно ему прям так хочется пускай,какую дорогу ему выбрать это его личное дело главное это ему дать список альтернатив(а раз вы уважаемый такой идеалист то почему бы вам лично своими руками не поучаствовать, слов нету сами будем рады,и спасибо скажем

Увы, но другого пути, кроме как активная жизненная позиция (кто кроме нас ?!) в мире опен-сорса ен существует.

ПС: участвовал и участвую.
Ответить