Flex存取数据库Image类型数据-Java后台
如果将图片数据储存在数据库内,如何把它显示出来,本例涉及技术语言有:
1. Flex ByteArray转化为图片SWFLoader/Image
2. LCDS RemoteObject运用
3. Java SE 6与Hibernate
4. MS SQL Server 2008 R2 Image数据类型存取
数据如:
Flex 显示结果,这里是id为5的图片
l 数据库创建
本例使用MS SQL Server 2008 R2,创建一个表AlbumImage,图见上
CREATE TABLE [dbo].[AlbumImage](
[id] [int] IDENTITY(1,1) NOT NULL,
[ImageData] [image] NULL,
[ImageName] [nvarchar](50) NULL,
[ImageType] [nvarchar](50) NULL,
CONSTRAINT [PK_AlbumImage] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
使用Java 6和Hibernate作为后台服务并与数据库打交道,AlbumImage.hbm.xml全文 l Java主要服务文件AlbumImageService.Java
public class AlbumImageService {
// 根据id获取一个AlbumImage
Private AlbumImage getAlbumImage(int identity){ Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx =session.beginTransaction(); AlbumImage item=new AlbumImage(); try{ item = (AlbumImage)session.get(com.les.java3016.AlbumImag e.class, identity); tx.commit(); } catch (Exception e) { tx.rollback(); System.out.println("代号:1002,getAlbumImage错误"); } finally{ session.close(); HibernateUtil.getSessionFactory().close(); } return item; } // 对外方法,获取一个AlbumImage的属性ImageData,该属性就是储存了image的二进制数据
publicbyte[] getImageData (int _id){
byte[] _imageData=null;
_imageData=this.getAlbumImage(_id).getImageData();
return _imageData;
}
}
l LCDS的remoting-config.xml,这个很简单,加一个关联远程java对象的destination。
com.les.java3016.AlbumImageService
l Flex文件,首先定义一个RemoteObject和一个SWFLoader
加入RemoteObject事件处理函数,java的byte[] 转化为AS3的flash.utils.ByteArray类型。 //结果处理函数 privatefunction onselectresult(event:ResultEvent):void{ var _imageData:ByteArray=ByteArray(event.result); _imageLoader=new Loader(); _imageLoader.loadBytes(_imageData); mySwfLoader.addChild(_imageLoader); } //处理错误函数 privatefunction onfault(event:FaultEvent):void{ Alert.show(event.fault.faultString, 'Error'); } 本例将远程调用放于Application的creationComplete事件
protectedfunction application1_creationCompleteHandler(event:FlexEve nt):void
{ //取得Id为5的图片;
srv.getImageData(5);
}
完毕。
猜你喜欢
转载自ulod91ulod.iteye.com/blog/1574405
今日推荐
周排行