var MS_JpegStream:TMemoryStream; M_BitMap:TBitMap; M_Jpeg:TJpegImage;
procedure TinsertForm.buttonSelectClick(Sender: TObject); var filename:string; begin image1.Picture.LoadFromFile(''); if OpenDialog1.Execute then begin
MS_JpegStream:=TMemoryStream.Create; M_BitMap:=TBitMap.Create; M_Jpeg:=TJpegImage.Create; if (filename='.bmp') or (filename='.BMP') then begin M_BitMap.LoadFromFile(OpenDialog1.FileName); M_Jpeg.Compress; M_Jpeg.Assign(M_BitMap); end else if (filename='.jpg') or (filename='.JPG') then begin M_Jpeg.LoadFromFile(OpenDialog1.FileName); end; M_Jpeg.SaveToStream(MS_JpegStream); end; end;
procedure TinsertForm.btnSaveClick(Sender: TObject); begin //插入新的记录 try adoquery1.close; adoquery1.SQL.Clear; adoquery1.SQL.Add('insert into hm_jc_dxal(tupian)values'); adoquery1.SQL.Add('(:tupian)'); adoquery1.Parameters.ParamByName('tupian').LoadFromStream(MS_JpegStream,ftblob); adoquery1.ExecSQL;
MS_JpegStream:TMemoryStream;
M_BitMap:TBitMap;
M_Jpeg:TJpegImage;
procedure TinsertForm.buttonSelectClick(Sender: TObject);
var
filename:string;
begin
image1.Picture.LoadFromFile('');
if OpenDialog1.Execute then
begin
filename:=extractfileext(OpenDialog1.FileName);
image1.Picture.LoadFromFile(OpenDialog1.FileName);
MS_JpegStream:=TMemoryStream.Create;
M_BitMap:=TBitMap.Create;
M_Jpeg:=TJpegImage.Create;
if (filename='.bmp') or (filename='.BMP') then
begin
M_BitMap.LoadFromFile(OpenDialog1.FileName);
M_Jpeg.Compress;
M_Jpeg.Assign(M_BitMap);
end
else if (filename='.jpg') or (filename='.JPG') then
begin
M_Jpeg.LoadFromFile(OpenDialog1.FileName);
end;
M_Jpeg.SaveToStream(MS_JpegStream);
end;
end;
procedure TinsertForm.btnSaveClick(Sender: TObject);
begin
//插入新的记录
try
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into hm_jc_dxal(tupian)values');
adoquery1.SQL.Add('(:tupian)');
adoquery1.Parameters.ParamByName('tupian').LoadFromStream(MS_JpegStream,ftblob);
adoquery1.ExecSQL;
ShowMessage('资料成功保存!');
MS_JpegStream.Free;
M_BitMap.Free;
M_Jpeg.Free;
except
ShowMessage('资料保存失败!!');
end;
end;
end;
中的参数ftblob是什么?
1.创建一个filestream,把一个文件写入;
2.由于文件比较大,创建一个memorystream,每次读入10m字节;
3.把这个10m的memorystream用loadfromStream方法存入一个blob字段,并清空memorystream;
4.循环步骤2、3,直到把大文件完全读入blob字段。
但结果结果有问题,只能得到最后一次写入的数据。