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