Как вставить изображение в базу данных, используя только 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
:
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;
Пожалуйста, дайте мне знать, с этим подходом, как я должен преодолеть эту проблему.