delphi做储存图片和一个文件的数据库如何实现,用什么控件好啊 新手求助啊,谢谢
4个回答
展开全部
其实问题说得不是很清楚,存储图片和一个文件的数据?这是什么意思?
另sql中image只是一个字段类型,又叫blob字段,它是用来存储文件流的,所以不管你的文件是什么类型的,包括(EXE,JPG,BMP)等都可以用楼上的方法进行存储,建议不要将文件存放到数据库中,非要这样做的话建议使用oracle数据库或者DB2
另sql中image只是一个字段类型,又叫blob字段,它是用来存储文件流的,所以不管你的文件是什么类型的,包括(EXE,JPG,BMP)等都可以用楼上的方法进行存储,建议不要将文件存放到数据库中,非要这样做的话建议使用oracle数据库或者DB2
追问
要求是要这样的
怎么实现呢
比如就是储存jgp和rar吧,但是不知道怎么 实现
追答
楼上已经给出答案了,我再说一次,不需要管你的文件是什么类型的
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).LoadFromFile(s);
photo是你的数据库的字段,s是“文件路径“+”文件名“
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQL:用Image类型的字段。
Access:用OLE类型字段。
delphi里边都用(TBlobField(AdoTable1.FieldByName('oPicture'))).LoadFromStream或者FromFile来处理,没必要用控件。
Access:用OLE类型字段。
delphi里边都用(TBlobField(AdoTable1.FieldByName('oPicture'))).LoadFromStream或者FromFile来处理,没必要用控件。
追问
1.sqlserver 怎样将image字段录入数据
2.另外一个非image的文件如何实现
初学,好多不懂谢谢
追答
呵呵,上边写着的就是啊。
1:假定sql表TB1有个image类型的字段oPic。
2:在delphi里:
a:首先拖拉个TImage、TOpenPictureDialog、TAdoQuery放窗体上。可以选取图片后,让Image.loadFromFile(XXX)读取图片文件。
b:保存:
with adoQuery1 do begin
sql.text:='select * from tb';
open;
with TBlobField(findField('oPic')) do begin
//这里用loadFromStream或者loadFromFile读取
end;
end;
end;
c:从sql库读取显示到图片上:
var os:TMemoryStream;
with adoQuery1 do begin
sql.text:='select * from tb where 1=1 '; //自己写吧。
open;
with tblobField(findField('oPic')) do begin
//这里吧blobField存入os内存流
image1.picture.loadFromStream(os)
end;
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在网上抄的,希望对你有帮助
var
jpeg: TJPEGIMAGE;
s: string;
begin
if Image2.Tag = 0 then
begin
showmessage( 'dd ');
exit;
end;
s := extractfilepath(Application.ExeName) + 'jpeg.jpg ';
jpeg := TJPEGIMAGE.Create;
jpeg.Assign(Image2.picture);
jpeg.CompressionQuality := 75;
jpeg.Compress;
jpeg.SaveToFile(s);
if DM.DS_YGPHOTO.Active then
begin
if form1.Image1.Tag = 0 then
begin
DM.DS_YGPHOTO.Insert;
DM.DS_YGPHOTO.fieldbyname( 'bh ').AsString := DM.DS_YGHMC.fieldbyname( 'bh ').AsString;
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).LoadFromFile(s);
end;
if form1.Image1.Tag = 1 then
begin
DM.DS_YGPHOTO.edit;
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).LoadFromFile(s);
end;
DM.DS_YGPHOTO.Post;
end;
freeandnil(jpeg);
上面的是存储
读取
var
jpeg: TJPEGIMAGE;
stream: TMemoryStream;
begin
Image1.picture.Assign(nil);
if DM.DS_YGPHOTO.fieldbyname( 'photo ').IsNull then
begin
Image1.Tag := 0;
Panel2.Caption := '无照片 ';
end
else
begin
jpeg := TJPEGIMAGE.Create;
stream := TMemoryStream.Create;
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).savetostream(stream);
stream.Seek(0, soFromBeginning);
jpeg.loadfromstream(stream);
Image1.picture.Bitmap.Assign(jpeg);
freeandnil(jpeg);
freeandnil(stream);
Image1.Tag := 1;
end;
var
jpeg: TJPEGIMAGE;
s: string;
begin
if Image2.Tag = 0 then
begin
showmessage( 'dd ');
exit;
end;
s := extractfilepath(Application.ExeName) + 'jpeg.jpg ';
jpeg := TJPEGIMAGE.Create;
jpeg.Assign(Image2.picture);
jpeg.CompressionQuality := 75;
jpeg.Compress;
jpeg.SaveToFile(s);
if DM.DS_YGPHOTO.Active then
begin
if form1.Image1.Tag = 0 then
begin
DM.DS_YGPHOTO.Insert;
DM.DS_YGPHOTO.fieldbyname( 'bh ').AsString := DM.DS_YGHMC.fieldbyname( 'bh ').AsString;
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).LoadFromFile(s);
end;
if form1.Image1.Tag = 1 then
begin
DM.DS_YGPHOTO.edit;
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).LoadFromFile(s);
end;
DM.DS_YGPHOTO.Post;
end;
freeandnil(jpeg);
上面的是存储
读取
var
jpeg: TJPEGIMAGE;
stream: TMemoryStream;
begin
Image1.picture.Assign(nil);
if DM.DS_YGPHOTO.fieldbyname( 'photo ').IsNull then
begin
Image1.Tag := 0;
Panel2.Caption := '无照片 ';
end
else
begin
jpeg := TJPEGIMAGE.Create;
stream := TMemoryStream.Create;
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).savetostream(stream);
stream.Seek(0, soFromBeginning);
jpeg.loadfromstream(stream);
Image1.picture.Bitmap.Assign(jpeg);
freeandnil(jpeg);
freeandnil(stream);
Image1.Tag := 1;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以按sql处理。但要注意效率。
追问
怎么处理呢
我在sql里面就没发现怎么把图片一类的传进去的东西
delphi初学,求指教
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询