delphi 文件以数据流方式从SQL 2008存入或读取附件
2个回答
展开全部
附件和图片都一样的。都是2进制流。读取出来的时候保存格式正确就行
procedure TForm1.LoadPictureClick(Sender: TObject); // 上传图片
begin
OpenPictureDialog1.Title := '打开图片';
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end; procedure TForm1.saveClick(Sender: TObject); //保存
var
Stream:TMemoryStream;
begin
try
Stream := TMemoryStream.Create; // 创建内存流
Image1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中 //Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);(另一种方法)
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into test3 values (:id,:photo)');
ADOQuery1.Parameters.ParamByName('id').Value := editId.Text;
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(Stream,ftBlob); // 读取保存的内存图
adoquery1.ExecSQL;
finally
Stream.Free; // 释放内存流
end;
end; procedure TForm1.ReadClick(Sender: TObject); // 读取图片
var
Stream:TMemoryStream;
Jpg:TjpegImage;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT * FROM test3 where id =' + editId.Text; // 查询图片
ADOQuery1.Open;
if not ADOQuery1.FieldByName('photo').IsNull then
begin
Stream:=TMemoryStream.Create ;
Jpg:=TjpegImage.Create ;
TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流
Stream.Position :=0;
jpg.LoadFromStream(Stream); // 加载图片
image2.Picture.Assign(Jpg);
end
else
begin
image2.Picture :=nil;
end; Stream.Free; Jpg.Free;end;
procedure TForm1.LoadPictureClick(Sender: TObject); // 上传图片
begin
OpenPictureDialog1.Title := '打开图片';
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end; procedure TForm1.saveClick(Sender: TObject); //保存
var
Stream:TMemoryStream;
begin
try
Stream := TMemoryStream.Create; // 创建内存流
Image1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中 //Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);(另一种方法)
adoquery1.Close;
adoquery1.SQL.Clear;
adoQuery1.SQL.Add('Insert into test3 values (:id,:photo)');
ADOQuery1.Parameters.ParamByName('id').Value := editId.Text;
adoQuery1.Parameters.ParamByName('photo').LoadFromStream(Stream,ftBlob); // 读取保存的内存图
adoquery1.ExecSQL;
finally
Stream.Free; // 释放内存流
end;
end; procedure TForm1.ReadClick(Sender: TObject); // 读取图片
var
Stream:TMemoryStream;
Jpg:TjpegImage;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT * FROM test3 where id =' + editId.Text; // 查询图片
ADOQuery1.Open;
if not ADOQuery1.FieldByName('photo').IsNull then
begin
Stream:=TMemoryStream.Create ;
Jpg:=TjpegImage.Create ;
TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流
Stream.Position :=0;
jpg.LoadFromStream(Stream); // 加载图片
image2.Picture.Assign(Jpg);
end
else
begin
image2.Picture :=nil;
end; Stream.Free; Jpg.Free;end;
推荐于2018-03-23
展开全部
………………………………………………………………图片存取数据库 with dm.aq_moju do
begin
Close;
SQL.Clear;
SQL.Add('Insert Into moju Values (:a,:b,:c,:d,:e,:f)'); //Values (...)定义参数名
Parameters.ParamByName('a').Value := Edit1.Text;
Parameters.ParamByName('f').LoadFromFile(Edit4.Text,ftBlob ); //保存图片到数据库
Parameters.ParamByName('b').Value := Edit2.Text;
Parameters.ParamByName('c').Value := combobox1.Text;
Parameters.ParamByName('d').Value := datetostr(datetimepicker1.date);
Parameters.ParamByName('e').Value := Edit3.Text;
ExecSQL;
end;
//图片的存入数据库
image1.Picture:=nil; //清空image图片……………………………………………………………………读取图片
with dm.aq_moju do
begin
edit1.Text:=fields[0].value;
edit2.Text:=fields[1].value;
edit3.Text:=fields[4].value;
TblobField(fields[5]).savetofile(zhu.Memo1.Text+'\1.jpg'); //读取图片。并将图片临时保存到该路径下。。。savetofile后加路径以及文件名。。。
datetimepicker1.Date:=strtodate(fields[3].value);
combobox1.Text:=fields[2].value;
edit4.Text:=zhu.Memo1.Text+'\1.jpg';
image1.Picture.LoadFromFile(edit4.Text);
end; 这是一个将图片以数据流的形式存入数据库以及读取。。。你可以看下。。。
begin
Close;
SQL.Clear;
SQL.Add('Insert Into moju Values (:a,:b,:c,:d,:e,:f)'); //Values (...)定义参数名
Parameters.ParamByName('a').Value := Edit1.Text;
Parameters.ParamByName('f').LoadFromFile(Edit4.Text,ftBlob ); //保存图片到数据库
Parameters.ParamByName('b').Value := Edit2.Text;
Parameters.ParamByName('c').Value := combobox1.Text;
Parameters.ParamByName('d').Value := datetostr(datetimepicker1.date);
Parameters.ParamByName('e').Value := Edit3.Text;
ExecSQL;
end;
//图片的存入数据库
image1.Picture:=nil; //清空image图片……………………………………………………………………读取图片
with dm.aq_moju do
begin
edit1.Text:=fields[0].value;
edit2.Text:=fields[1].value;
edit3.Text:=fields[4].value;
TblobField(fields[5]).savetofile(zhu.Memo1.Text+'\1.jpg'); //读取图片。并将图片临时保存到该路径下。。。savetofile后加路径以及文件名。。。
datetimepicker1.Date:=strtodate(fields[3].value);
combobox1.Text:=fields[2].value;
edit4.Text:=zhu.Memo1.Text+'\1.jpg';
image1.Picture.LoadFromFile(edit4.Text);
end; 这是一个将图片以数据流的形式存入数据库以及读取。。。你可以看下。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询