Добрый день.
Возникла проблема при попытке записи JPEG файла в blob поле MySQL в Лазарусе 2.0.6. под Windows 7.
Собственно запись данных в blob поле проходит, но данные приходят искаженные и по виду перекодированы.
Вот что должно быть:
яШяа JFIF яЫ C
$.' ",#(7),01444'9=82<.342яЫ C
Получаю это:
???? JFIF ?? C
$.' ",#(7),01444'9=82<.342?? C
Вроде явно указан тип ftBlob , двоичные данные, но нет где то их по пути перекодирует.
База данных старинная и проверена временем, фото от туда читаются в Лазарусе без проблем.
Текстовые поля также.
Пол дня сидел в поисковиках, но не нашел даже намека на решение проблемы.
Использую компоненты :
MySQL57Connection1: TMySQL57Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
код функции:
function TForm1.SavePhoto(uk: integer): boolean;
begin
Result:=False;
SQLTransaction1.Active:=False;
SQLQuery1.Clear;
SQLQuery1.SQL.Text:='update personal set photo =:BLOB_PHOTO where id = '+#39+Persons[uk].sID+#39+';';
SQLQuery1.ParamByName('BLOB_PHOTO').LoadFromFile('Photo.jpg',ftBlob);
try
SQLTransaction1.Active:=True;
except
//memo1.Lines.Add('Ошибка создания транзакции');
exit;
end;
SQLQuery1.ExecSQL;
result := SQLQuery1.RowsAffected >= -1;
if result then
SQLTransaction1.Commit
else
begin
SQLTransaction1.Rollback;
result := false;
end;
end;