Jak wstawić obraz do bazy danych za pomocą TADOQuery Component Only

Mam jeden prosty podstawowy problem, próbuję wstawić obraz do bazy danych za pomocąInsert instrukcja z innymi wartościami kolumn również używającymiTADOQuery składnik.

Ponieważ kod jest już napisany przez kogoś, jakiś fikcyjny przykładowy kod, który chciałbym tutaj umieścić, aby wyjaśnić poszczególne kroki.

Pamiętaj, że to działało dobrzeTQuery komponent, ponieważ zastępujęTQuery zTADOQuery komponent, muszę zrobić to samoTADOQuery tylko komponent.

Ten sam kod powinien działać zarówno dla SQL Server, jak i baz danych Oracle.

Typ danych kolumny, w której próbuję wstawić obraz, jest typuVarBinary w bazie danych SQL Server.

Wstawianie obrazu do tabeli za pomocą TQuery

Tworzenie obrazu za pomocąTImage.

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

Konwersja obrazu naTJpegImage i oszczędzanie naTMemoryStream.

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

Wstawianie do bazy danych za pomocąSetBlobdata własnośćTQuery składnik.

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; 

Teraz robię to samo, używającTADOQuery:

W stanie stworzyć obraz.Konwertowanie go na TJpeg i zapisywanie doTMemoryStream.

Próba wstawienia obrazu do bazy danych za pomocąLoadFromStream(stream, ftBlob) ale pojawia się błąd„Łańcuch lub wartość binarna mogą być obcięte”.

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; 

Daj mi znać, dzięki temu podejściu, jak mam rozwiązać ten problem.

questionAnswers(2)

yourAnswerToTheQuestion