Flex存取数据库Image类型数据-Java后台

12 篇文章 0 订阅
10 篇文章 0 订阅

如果将图片数据储存在数据库内,如何把它显示出来,本例涉及技术语言有:

1.         Flex ByteArray转化为图片SWFLoader/Image

2.         LCDS RemoteObject运用

3.         Java SE 6Hibernate

4.         MS SQL Server 2008 R2 Image数据类型存取

数据如:

 

 

 

Flex 显示结果,这里是id5的图片

 

 

 

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 6Hibernate作为后台服务并与数据库打交道,AlbumImage.hbm.xml全文

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- Generated 2011-1-3 14:16:57 by Hibernate Tools 3.2.4.GA -->

<hibernate-mapping>

    <class name="com.les.java3016.AlbumImage" table="AlbumImage" schema="dbo" catalog="XTJC">

        <id name="id" type="int">

            <column name="id" />

            <generator class="assigned" />

        </id>

        <property name="imageData" type="binary">

            <column name="ImageData" />

        </property>

        <property name="imageName" type="string">

            <column name="ImageName" />

        </property>

        <property name="imageType" type="string">

            <column name="ImageType" />

        </property>

    </class>

</hibernate-mapping>

 

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.AlbumImage.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的二进制数据

 

    public byte[] getImageData (int _id){

    byte[] _imageData=null;

    _imageData=this.getAlbumImage(_id).getImageData();

       return _imageData;       

    }

}

l  LCDSremoting-config.xml,这个很简单,加一个关联远程java对象的destination

<destination id="echo2005U">

        <properties>

             <source>com.les.java3016.AlbumImageService</source>

        </properties>

</destination>

 

l  Flex文件,首先定义一个RemoteObject和一个SWFLoader

 

<mx:RemoteObject id="srv" destination="echo2005U" result="onselectresult(event)" fault="onfault(event)"/>

<mx:SWFLoader id="mySwfLoader" scaleContent="true"/>

 

加入RemoteObject事件处理函数,javabyte[] 转化为AS3flash.utils.ByteArray类型。

        //结果处理函数

private function onselectresult(event:ResultEvent):void{

                var _imageData:ByteArray=ByteArray(event.result);

                _imageLoader=new Loader();

                _imageLoader.loadBytes(_imageData);

                mySwfLoader.addChild(_imageLoader);

            }

           

           

            //处理错误函数

            private function onfault(event:FaultEvent):void{

                Alert.show(event.fault.faultString, 'Error');     

            }

 

本例将远程调用放于ApplicationcreationComplete事件

protected function application1_creationCompleteHandler(event:FlexEvent):void

            {  //取得Id5的图片;

srv.getImageData(5);

         }

 

完毕。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值