我用insert语句: with query1 do begin close; sql.Clear; sql.Add('insert pictest (ID,PIC) VALUES(:ID,:PIC)'); parambyname('id').AsInteger:=1; TBlobField(parambyname('pic')).LoadFromFile(OpenPictureDialog1.FileName);//这一句是否正确? ExecSQL; end;执行有错误。
procedure TForm1.DBImage1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin ADOTable1.Open; ADOTable1.Edit; DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end; end; 你也可以试试的,不过我用于多个表中的插入,当然了,前边用case语句判断的, 可是,前两个表没问题,在后来的表就不行了,哪位大侠能明白为什么。你如果知道了也告诉我好吗?
procedure TForm1.Button1Click(Sender: TObject);var Stream1: TBlobStream; Stream2: TStream; begin Stream1 := TBlobStream.Create(Table1Notes, bmRead); try ClientDataSet1.Edit; { here抯 a different way to create a blob stream } Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Res'), bmReadWrite); try Stream2.CopyFrom(Stream1, Stream1.Size); ClientDataSet1.Post; finally Stream2.Free; end; finally Stream1.Free; end; end;具体细节查看帮助TBlobfield
解决不能插入jpeg图片的问题: use jpeg; procedure TForm1.DBImage1DblClick(Sender: TObject); var filepath,extname:string ; jpeg:Tjpegimage;begin query1.RequestLive:=true; if openpicturedialog1.Execute then begin filepath:=openpicturedialog1.FileName; if filepath<>'' then extname:=extractfileext(filepath); if (uppercase(extname)='.JPEG') or (uppercase(extname)='.JPG') then begin query1.Edit; jpeg:=Tjpegimage.Create; jpeg.LoadFromFile(filepath); dbimage1.Picture.Graphic.Assign(jpeg); end else begin query1.edit; query1graphic.LoadFromFile(filepath); end; query1.Post; end; end;
MyStream:StringStream;
with query1 do
begin
close;
sql.Clear;
sql.Add('insert pictest (ID,PIC) VALUES(:ID,:PIC)');
parambyname('id').AsInteger:=1;
TBlobField(parambyname('pic')).LoadFromFile(OpenPictureDialog1.FileName);//这一句是否正确?
ExecSQL;
end;执行有错误。
begin
if OpenPictureDialog1.Execute then
begin
ADOTable1.Open;
ADOTable1.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;
你也可以试试的,不过我用于多个表中的插入,当然了,前边用case语句判断的,
可是,前两个表没问题,在后来的表就不行了,哪位大侠能明白为什么。你如果知道了也告诉我好吗?
Stream:TStream;
DataSize:Integer;
ptrData:PByte;
vtData:OleVariant;
begin
Stream := TFileStream.Create('E:\test1.jpg',fmOpenRead);
DataSize := Stream.Size;
vtData := varArrayCreate([0,DataSize-1],varByte);
ptrData := varArrayLock(vtData);
Stream.Position := 0;
Stream.Read(ptrData^,DataSize);
varArrayUnlock(vtData);
0A Stream.Free;
ADOQuery1.Parameters.ParamByName('newID').Value := 2;
ADOQuery1.Parameters.ParamByName('newPIC').Value := vtData;
ADOQuery1.ExecSQL;
ADOQuery1.Parameters.ParamByName('newPIC').Value := Null;
vtData := Unassigned;
end;
写进去,如何用流读出来呢?
Stream1: TBlobStream;
Stream2: TStream;
begin
Stream1 := TBlobStream.Create(Table1Notes, bmRead);
try
ClientDataSet1.Edit;
{ here抯 a different way to create a blob stream }
Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Res'), bmReadWrite);
try
Stream2.CopyFrom(Stream1, Stream1.Size);
ClientDataSet1.Post;
finally
Stream2.Free;
end; finally
Stream1.Free;
end;
end;具体细节查看帮助TBlobfield
use jpeg;
procedure TForm1.DBImage1DblClick(Sender: TObject);
var filepath,extname:string ;
jpeg:Tjpegimage;begin
query1.RequestLive:=true;
if openpicturedialog1.Execute then
begin
filepath:=openpicturedialog1.FileName;
if filepath<>'' then
extname:=extractfileext(filepath);
if (uppercase(extname)='.JPEG') or (uppercase(extname)='.JPG') then
begin
query1.Edit;
jpeg:=Tjpegimage.Create;
jpeg.LoadFromFile(filepath);
dbimage1.Picture.Graphic.Assign(jpeg);
end
else
begin
query1.edit;
query1graphic.LoadFromFile(filepath);
end;
query1.Post;
end;
end;