DBImage怎么从vs2008 连接数据库库2008取图片啊 我vs2008 连接数据库库放了图片地址怎么没反应

如何将一jpg图像存入sql数据库
[问题点数:50分,结帖人luaijun]
如何将一jpg图像存入sql数据库
[问题点数:50分,结帖人luaijun]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2002年1月 C++ Builder大版内专家分月排行榜第一2001年6月 C++ Builder大版内专家分月排行榜第一2000年11月 C++ Builder大版内专家分月排行榜第一2000年8月 C++ Builder大版内专家分月排行榜第一2000年7月 Delphi大版内专家分月排行榜第一
2001年7月 C++ Builder大版内专家分月排行榜第二2001年3月 C++ Builder大版内专家分月排行榜第二
2002年5月 Delphi大版内专家分月排行榜第一2002年1月 Delphi大版内专家分月排行榜第一
2007年11月 .NET技术大版内专家分月排行榜第二2007年1月 Delphi大版内专家分月排行榜第二2006年12月 Delphi大版内专家分月排行榜第二2006年10月 Delphi大版内专家分月排行榜第二2002年8月 Delphi大版内专家分月排行榜第二2002年6月 Delphi大版内专家分月排行榜第二2001年12月 Delphi大版内专家分月排行榜第二
2001年5月 C++ Builder大版内专家分月排行榜第二2001年4月 C++ Builder大版内专家分月排行榜第二
2001年9月 C++ Builder大版内专家分月排行榜第三2001年7月 C++ Builder大版内专家分月排行榜第三
2001年5月 C++ Builder大版内专家分月排行榜第二2001年4月 C++ Builder大版内专家分月排行榜第二
2001年9月 C++ Builder大版内专家分月排行榜第三2001年7月 C++ Builder大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。怎样从SQL数据库中调图片
Description of your first forum.
3 篇帖子 & 分页:1 / 1
由 tiantainanhai & 星期二, 日 00:54
我现在没事做.自己帮朋友做了一个健身房管理系统,但我想把会员照片从SQL数据库中把该会员的照片调到上怎么做呢
请各位高手指教
由 jeansonliu & 星期二, 日 14:19
由 无泪 & 星期二, 日 15:13
这里有Access数据库中读取图片的例子,应该和SQL的差不多。
在MS Access数据库中图像的存储和显示
在保存图片时用:
TBlobField(FieldByName('ZLPIC')).LoadFromFile(OPD.FileName);
其中OPE为一个打开文件对话框。
在打开图片时用:
MS := CreateBlobStream(FieldbyName('ZLPIC'),bmRead);
Image2.Picture.LoadFromStream(MS);
MS 为TStream的变量。
从来没有什么问题,显示、打印都没问题,也没管过什么文件头。
注:以下程序中注意在uses处加上DB,jpeg,如没有则TBlobField找不到
如何实现在MS Access数据库中图像的存储和显示
一、 原理介绍——流式数据的类型及其应用
在Dephi中提供了TStream来支持对流式数据的操作。TStream是万流之源,但由于它是一个抽象类,故不能被直接使用;而要使用其相应的子类,如:TFileStream
、TStringStream、TMemoryStream、TBlobStream、TWinSocketStream和TOleStream。TStream提供了统一、简洁的方法来进行数据的读写。
1.)SaveToStream(Stream: TStream );
作用:将类中的数据写到Stream的当前位置中
2.)LoadFromStream(Stream: TStream); 作用:从当前位置读入Stream里的数据
实际使用时我们基本上只要使用上面两个函数就可以了。
二、所遇到的问题及相应的解决方法
为了节省图像的存储空间和使用更加方便,决定采用JPEG这种图像格式。
(一)所遇到的问题
第一、在Delphi
5中进行画图所用到的组件是TImage,所生成的图像的格式为BMP格式,而为了节省图像的存储空间,图像在数据库里存储的格式须为JPEG格式,这样就产生了图像格式转化的需求;而TImage本身并不直接提供这两种图像格式之间的转化。
第二、怎样将存储在Microsoft Access数据库中的图像取出并且显示出来:在Delphi
5中,能提供这种功能的组件是TDBImage,但该组件却存在着一个很大的缺陷:它所能显示的图像类型只能是一些图标文件,元文件和BMP文件,而不能支持JPEG格式的图像在该组件中的显示;但根据实际需要,在Microsoft
Access数据库中所存储的图像数据却是以JPEG格式保存的。
(二)相应的解决方法
为了解决上述两个问题,可以采用目前数据库中一种名为大二分对象(BLOB——Binary Large
Object),它是用来处理某些特殊格式的数据的。BLOB在数据库的表中实际上是以二进制数据的形式存放的。
为了处理BLOB字段,可以借鉴一些可视的桌面数据库的方法。在这里,我们选择了通过内存流的方式来完成;使用内存流,可减少磁盘操作,大大提高运行效率。
具体的过程和相关的程序代码如下:
1、如何实现在Microsoft Access数据库中的图像存储:
这里是利用TStream的子类TMemoryStream向Microsoft
Access数据库中存储图像的。下面的这段代码是在按了“保存”按钮之后所触发的事件处理程序:
procedure TForm1.Button1Click(Sender: TObject);
MyJPEG : TJPEGI
MS: TMemoryS
MyJPEG := TJPEGImage.C
with MyJPEG do
Assign(Image.Picture.Graphic);
MS:=TMemoryStream.
SaveToStream(MS);
MS.Position:=0;
TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS);
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
在这段代码里TStream的子类TMemoryStream利用内存流起到了将BMP格式转化为JPEG格式的中间桥梁的作用。
2、如何将图像从Microsoft Access数据库中取出并显示出来:
下面的这段代码是在按了“查看图像”按钮之后所触发的事件处理程序:
procedure TForm1.Button1Click(Sender: TObject);
var tempstream:TStringS
tempjpeg:TJPEGI
tempstream:=TStringStream.Create(' ');
TBlobField(Query1.FieldByName('Image')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.C
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
tempstream.F
tempjpeg.F
这段代码的主要作用是:首先将查询结果中的JPEG图像格式数据保存到TStringStream中去,然后设置数据指针在TStringStream中的位置为0;接着从TStringStream中读入相关数据,并把它们赋给TDBImage.Picture.Bitmap,这样一来就实现了将数据库中所存储的JPEG格式的数据转化为BMP格式,并在TDBImage中将图像显示出来。最后将TStringStream和TJPEGImage这两个对象释放掉。特别要注意的是不能在设计阶段设置TDBImage的DataField属性,而只能通过写代码的形式在运行阶段把利用流式数据所转化过来的新格式的图像数据赋给TDBImage.Picture.Bitmap。
使用ADO连接
TBlobField(ADOQuery1.FieldName('blob')).Loadfromfile('文件名')
TBlobField(ADOQuery1.FieldName('blob')).Savetofile('文件名')
(ADOQuery1.FieldByName('blob') as
TBlobField).Loadfromfile('文件名')
(ADOQuery1.FieldByName('blob') as
TBlobField).Savetofile('文件名')
3 篇帖子 & 分页:1 / 1ext怎么从数据库中取得图片路径,然后在js上显示出图片呢?_百度知道
ext怎么从数据库中取得图片路径,然后在js上显示出图片呢?
首先从数据库获取信息到前端,接收数据要用store,你把图片的路径写入数据库中,然后通过store去load数据到前端。然后要看你要怎么展示图片,在哪显示了!例如使用Ext.XTemplate,自己去写图片显示的位置,样式等。可以去参考ext3.0文档中Ext.DataView的例子var store = new
Ext.data.JsonStore( {fields : [ &id&, &name&, &path& ], url: '....',......});store.load();var tpl = new Ext.XTemplate('&div class=&aaa&&&img src=&{path}& title=&{name}& /&&/div&',);var dataview = new Ext.DataView( {store: store,tpl: tpl,........});var panel = new Ext.Panel({.......items:dataview )}还可以使用textfield,这就要自己完成整个panel或window的布局了例如:.....{columnWidth : .5,layout : 'form',labelWidth : 60,items : [{ xtype : 'textfield', fieldLabel : '个人照片', width : 150, Height : 180, inputType : 'image', listeners : { // 该项被载入时加载照片
'render' : function(_filed) {
_filed.getEl().dom.src = &a.jpg&;//这里图片的路径可以预先从store中读取,赋给变量然后给它
}]}如果是在grid里显示图片,那么grid中的ColumnModel里可以有一个字段是图片路径,然后通过store传入该路径并显示例如:var sm = new Ext.grid.CheckboxSelectionModel();var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), sm, { header : &图片&, width : 40, dataIndex : &path&, align : &center&, renderer : function(v) {
return &&img src='& + v +&'&&
}},......还有很多跟图片有关的地方,我暂时也想不起来,看具体情况具体解决了,总之后台对应的是数据库,前台对应的是store,前后交互就是把后台的数据放store里,然后前台根据store做前台该做的事
其他类似问题
为您推荐:
}: &#39!list:DXImageTransform.picPath width=&QMS&#47.{displayfield&#39.M100&quot.;&#39: 14;&#47,&#39.picpath &#47.action&;; 图片宽度
height .jpg'/ src=u;& 图片高度
autoE;: 'images/&filter,function(u){: {image&quot, /
}};&#47: ': u.., &#47, height=&box&#39: '/ 'img alt=&quot,
xtype : &#39.AlphaImageLoader(sizingMethod=scale);delete,
width : 14;img&#39:progidLoadData(&remind
使用全局ID 唯一命名法是最有效果的,
ext的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 vs2008 连接数据库 的文章

 

随机推荐