Страницы

Поиск по вопросам

понедельник, 29 октября 2018 г.

Загрузка файла (картинки - jpg в BLOB-поле)

Пытаюсь загрузить файл в БД (MySQL), в blob-поле (маленькую, до 50kb картинку - формат jpg).
Но вот что-то у меня идёт не так:
var ImgPath: String;
begin ImgPath:=ExtractFilePath(ParamStr(0))+'data\photo.jpg'; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.ADD('UPDATE exam_users SET `photo`=(:fphoto) WHERE `number` = 94'); ADOQuery1.parameters.parambyname('fphoto').LoadFromFile(ImgPath, ftBlob);
ADOQuery1.ExecSQL; ADOQuery1.Close; end;
также пробовал и так:
var ImgPath: String; fs:TFileStream;
begin ImgPath:=ExtractFilePath(ParamStr(0))+'data\photo.jpg'; fs :=TFileStream.Create(ImgPath, fmOpenRead or fmShareDenyWrite); ADOQuery1.SQL.ADD('UPDATE exam_users SET `photo`=(:fphoto) WHERE `number` = 94'); ADOQuery1.Parameters.ParamByName('fphoto').LoadFromStream(fs, ftBlob); ADOQuery1.ExecSQL; fs.Free; ADOQuery1.Close; end;
Все эти два примера выдают одну ошибку:
Project Project2.exe raised exception class EOleException with message 'Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом'.


Ответ

Вернулся снова в проекте к этому вопросу. Оказывается если в первом примере данное сообщение при компиляции проекта игнорировать, то всё прекрасно записывается в БД! А когда файл проекта скопмилирован и просто запускается на исполнение, то ни какого сообщения программа не выдаёт и всё срабатывает на 100%. Файл без каких-либо ошибок загружается в Blob-поле БД. Так что:
ImgPath:=ExtractFilePath(ParamStr(0))+'data\photo.jpg'; ADOQuery1.Close; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('UPDATE exam_users SET `photo`=(:blob_photo) WHERE `number` = 94'); ADOQuery1.parameters.parambyname('blob_photo').LoadFromFile(ImgPath, ftBlob);
ADOQuery1.ExecSQL; ADOQuery1.Close;
работоспособный код.

Комментариев нет:

Отправить комментарий