Загрузить файл в БД

Добрый день!
Мне необходимо загрузить файл с рабочего стола в базу данных.
Delphi 10.4 / MS SQL Server


Пробую использовать TBlobfield, но делфи ругается

Так а как ругается-то?

Вообще в БД часто удобнее хранить не блобы, а просто пути относительно какой-то папки, где эти файлы лежат.
То есть файлы хранятся в определенной папке (копируются туда), например, папка files рядом с программой/БД, а в БД хранится только путь относительно этой папки (то есть например просто имя файла).

И код лучше выкладывать в виде текста, а не скриншотами.

[dcc32 Error] Unit1.pas(265): E2003 Undeclared identifier: ‘ftBlob’

Увы, стоит задача на добавление файла в бд

Нет Data.DB в uses?

Может есть другая альтернатива?

LoadFromStream есть еще, но там тоже тот же ftBlob нужно задать. В uses юнит добавь как выше подсказуют

зы еще собаку не надо в имени параметра указывать

Все заработало, спасибо.

//загружаю ФАЙЛ в бд
  for i := 0 to Length(ArrLeads) - 1 do
  begin
    DM.spIns.Parameters.Refresh;
    DM.spIns.Parameters.ParamByName('File').LoadFromFile('C:\Users\Json.jpg', ftBlob);
   end;

НО данные в таблицу не заносятся, не пойму почему

Ну для начала надо проверить выполняется ли вообще эта часть кода добавив точку остановки в отладчике или отладочный вывод, меседжбокс и т.д.

А это что?

Добавила отладочный вывод, кусок кода выполняется, в БД не заносится(

for i := 0 to Length(ArrLeads) - 1 do - у меня вложенный json файл

а где, собственно, выполнение кода Insert вставки в БД ?
после строчки

нужна строчка с

DM.spIns.ExecSql;

а ещё, абсолютно непонятен ваш цикл

зачем он? Если внутри цикла ничего не меняется?
Или Вы хотите много раз вставить в БД один и тот же файл? А в чём смысл?

  1. Неизвестно тип поля - где вы пытайтесь сохранить эту файл .jpg
  2. На все таблице загружайте только одну фото Json.jpg из пути *'C:\Users*
  3. Как вам уже сказали: непонятен ваш цикл и НЕ правильно тоже и НЕ нужно его… на пример : если таблице есть (Чай, Кофе и Сахар ) и требуется соответствующее фотографии загрузить на это товаров… Что будет если вы запустите это цикл ?
  4. Будет хорошо если вы полистайте книгу про Delphi и там есть много примеров - где вы будите изучать цикл и сохранить картинку таблице.

Всем спасибо. Учла замечания
Возник еще один вопрос
Мне необходимо получить файлы и закинуть в базу данных

Делаю гет-запрос на получение файла

procedure TForm1.Get;  
var
m : TMemoryStream;
begin 
....
IdHTTP1.Get('https://1234', m);
m.SaveToFile('1.jpg');
...
end

И пытаюсь занести в БД

DM.cds_Slc.Open;
  if DM.cds_Slc.RecordCount > 0 then
    begin
      DM.cds_Slc.First;
      while not DM.cds_Slc.Eof do
        begin
          Get;
          DM.spUpd.ExecProc; //spUpd - процедура Update
        end;
    end;

Один файл сохраняет, но в БД не заносит. На второй итерации while вылетает с ошибкой http/1.1 400 bad request

В БД есть столбец File с типом данных Image, туда надо занести файл
Есть хранимая процедура

ALTER PROCEDURE [dbo].[update_Doc]
@IdDoc int = null,
@File image = null
AS
BEGIN
UPDATE Doc SET
IdDoc = @IdDoc,
File = @File
Where IdDoc = @IdDoc
END;