Как вставить изображение в базу данных, используя только TADOQuery Component

У меня есть одна простая фундаментальная проблема, я пытаюсь вставить изображение в базу данных, используяInsert заявление с другими значениями столбца также с использованиемTADOQuery составная часть.

Поскольку код уже написан кем-то, какой-то фиктивный пример кода я хотел бы выложить здесь для вашего разъяснения с соответствующими шагами.

Обратите внимание, что это работало нормально сTQuery компонент, так как я заменяюTQuery сTADOQuery компонент, я должен сделать то же самое, используяTADOQuery только компонент.

Тот же код должен работать как для SQL Server, так и для баз данных Oracle.

Тип данных столбца, в который я пытаюсь вставить изображение, имеет типVarBinary в базе данных SQL Server.

Вставка изображения в таблицу с помощью TQuery

Creating an image using TImage.

msBinImgStream := TMemoryStream.Create; 
imgCustom := TImage.Create(self); 
imgJpg := TJPEGImage.Create; 

Converting the image to TJpegImage and saving to TMemoryStream.

imgJpg.Assign(imgCustom.Picture.Bitmap); 
imgJpg.SaveToStream(msBinImgStream);

Inserting into the database by using SetBlobdata property of TQuery component.

sSql := 'INSERT INTO Table_Name(Column1, Column2, Column_Image) VALUES ( ''' + Value1 + ''', ''' + Value2 + ''', :pBlob)'; 
qryTQuery.SQL.Add(sSQL); 
qryTQuery.ParamByName('pBlob').SetBlobData(msBinImgStream.Memory, msBinImgStream.Size); 
qryTQuery.ExecSQL; 

Теперь делаем то же самое, используяTADOQuery:

Able to create the image. Converting it to TJpeg and saving to TMemoryStream.

Trying to insert the image into database using LoadFromStream(stream, ftBlob) but getting an error "String or binary value may be truncated".

sSql := 'INSERT INTO Table_Name(Column1, Column2, Column_Image) VALUES ( ''' + Value1 + ''', ''' + Value2 + ''', :pBlob)'; 
qryADOQuery.SQL.Add(sSQL); 
qryADOQuery.Parameters.ParamByName('pBlob').LoadFromStream(msBinImgStream, ftBlob); 
qryADOQuery.ExecSQL; 

Пожалуйста, дайте мне знать, с этим подходом, как я должен преодолеть эту проблему.

Ответы на вопрос(2)

Ваш ответ на вопрос