delphi做储存图片和一个文件的数据库如何实现,用什么控件好啊 新手求助啊,谢谢

 我来答
stzxx
2012-02-01 · TA获得超过129个赞
知道小有建树答主
回答量:383
采纳率:0%
帮助的人:143万
展开全部
其实问题说得不是很清楚,存储图片和一个文件的数据?这是什么意思?

另sql中image只是一个字段类型,又叫blob字段,它是用来存储文件流的,所以不管你的文件是什么类型的,包括(EXE,JPG,BMP)等都可以用楼上的方法进行存储,建议不要将文件存放到数据库中,非要这样做的话建议使用oracle数据库或者DB2
追问
要求是要这样的
怎么实现呢
比如就是储存jgp和rar吧,但是不知道怎么 实现
追答
楼上已经给出答案了,我再说一次,不需要管你的文件是什么类型的
tblobfield(DM.DS_YGPHOTO.fieldbyname( 'photo ')).LoadFromFile(s);

photo是你的数据库的字段,s是“文件路径“+”文件名“
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gselec
2012-01-29 · TA获得超过935个赞
知道小有建树答主
回答量:252
采纳率:25%
帮助的人:41.6万
展开全部
SQL:用Image类型的字段。
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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jupiterhunter
2012-01-30
知道答主
回答量:52
采纳率:0%
帮助的人:10.8万
展开全部
在网上抄的,希望对你有帮助
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hazehua29
2012-01-30
知道答主
回答量:20
采纳率:0%
帮助的人:18.2万
展开全部
可以按sql处理。但要注意效率。
追问
怎么处理呢
我在sql里面就没发现怎么把图片一类的传进去的东西
delphi初学,求指教
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式