posts - 15,comments - 65,trackbacks - 0
         嘿,先向大家宣传下我站啊,http://www.lovestblog.cn/,这是我的个人博客,希望大家常来我博客坐坐呢,相信大家也会有所收益的,不过我也不会放弃javaeye的,我也会一直在这里写东西的。 (转载的请不要删除该段,谢谢合作)
         前几天有网友要我写一篇关于flex与数据库交互的例子,一直由于时间紧没能写,今天晚上特地花点时间写了个例子,希望能给大家一点帮助,其实flex与数据库交互很简单的,我主要是通过java与数据库交互读取数据,然后flex和java进行交互,把java读取的数据在flex前端显示出来,好了,说了一堆废话,下面代码说明问题。
        对于建立一个flex web应用的步骤我就不多说了哈。
        首先要求大家到数据库建立一个数据库,在我这例子中数据库名为userDb,建立一个表userInfo,里面设置两个字段一个为id,一个为name。
        第二,创建以下java代码在src目录下
User.java   
package org.rjb.java;   
  
public class User {   
    
private String name;   
  
    
public String getName() {   
        
return name;   
    }
   
    
public void setName(String name){   
        
this.name=name;   
    }
   
}
   
  
UserDao.java   
package org.rjb.java;   
  
import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Statement;   
import java.util.ArrayList;   
import java.util.List;   
  
public class UserDao {   
       
    
public static Connection getConnection(){   
        Connection c
=null;   
        
try{   
            String driver
="com.mysql.jdbc.Driver";   
            String url
="jdbc:mysql://localhost:3306/userDb";   
            String username
="root";   
            String password
="1235";   
            Class.forName(driver);   
            c
=DriverManager.getConnection(url,username,password);    
        }
catch(Exception e){   
            System.out.println(e.getMessage());   
        }
   
        
return c;   
    }
   
    
public List getAllUser()throws SQLException{   
        Connection c
=getConnection();   
        Statement st
=c.createStatement();   
        ResultSet rs
=st.executeQuery("select * from UserInfo");   
        ArrayList userList
=new ArrayList<User>();   
        
while(rs.next()){   
            User u
=new User();   
            u.setName(rs.getString(
"name"));   
            userList.add(u);   
        }
   
        
return userList;   
    }
   
  
}
  
以上是java端的全部代码了,下面是flex端的代码。
    第三,创建以下代码在flex_src下:
User.as   
package org.rjb.flex   
{   
    [RemoteClass(alias
="org.rjb.java.User")]   
    
public class User   
    
{   
        
private var _name:String;   
        
public function User()   
        
{   
        }
   
        
public function get name():String{   
            
return this._name;   
        }
   
        
public function set name(name:String):void{   
            
this._name=name;   
        }
   
    }
   
}
  

User.as
package org.rjb.flex
{
    [RemoteClass(alias
="org.rjb.java.User")]
    
public class User
    
{
        
private var _name:String;
        
public function User()
        
{
        }

        
public function get name():String{
            
return this._name;
        }

        
public function set name(name:String):void{
            
this._name=name;
        }

    }

}

接下来是mxml代码,也就是我们真正展示我们数据的界面
FlexWithJava.mxml   
<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">   
    
<mx:RemoteObject id="ud" destination="UserDao" result="onResult(event)" fault="onFault()" />   
    
<mx:DataGrid dataProvider="{users}">   
        
<mx:columns>   
            
<mx:DataGridColumn dataField="name" headerText="name" />   
        
</mx:columns>   
    
</mx:DataGrid>   
    
<mx:Label id="info" />   
    
<mx:Button label="click" click="clickFun()" />   
    
<mx:Script>   
        
<![CDATA[   
            import mx.collections.ArrayCollection;   
            import mx.rpc.events.ResultEvent;   
            [Bindable]   
            public var users:ArrayCollection=new ArrayCollection();   
            public function clickFun():void{   
                ud.getAllUser();   
            }   
            public function onResult(event:ResultEvent):void{   
                users=ArrayCollection(event.result);   
                info.text="get data successfully";   
            }   
            public function onFault():void{   
                info.text="Error";   
            }   
        
]]>   
    
</mx:Script>   
</mx:Application>  
      第四,配置remoting-config.xml,在里面加上如下配置文件:
<destination id="UserDao">   
     
<properties>   
          
<source>org.rjb.java.UserDao</source>   
     
</properties>   
</destination>  
     ok,就这么简单,呵呵,赶快运行,看看效果呢。
posted on 2009-04-11 17:52 你假笨 阅读(7772) 评论(14)  编辑  收藏

FeedBack:
# re: Flex与java交互之数据库数据读取
2009-04-12 19:03 | 左洸
你用的也是 jspkj.com 的主机啊,我去看了好多次了,价钱道挺公道,一直犹豫。另外,我现在还在犹豫用php 还是 java ,java感觉还是太重型了。

对了,你准备不准备备案啊,这也是个让人头疼的问题啊  回复  更多评论
  
# re: Flex与java交互之数据库数据读取[未登录]
2009-04-12 20:00 | 你假笨
@左洸
嗯,呵呵,那空间站还不错哈,服务态度也好,可以尝试下呢。我有时间了也学下php啊,flex和php结合得好像更好些
  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2009-04-27 15:28 | ithanshui
博主你好:
我是初学flex的,我将代码整理后,运行的时候点击按钮DataGrid里面的数据为什么显示不出来?  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2009-07-10 00:06 | hcg8827
bloger我不知道你最后的显示是怎么显示出来的 但是我可以说这段代码是有问题的
在as的 ao和java jo对应中 在flex的command你是取一个arraycollection 作为dataprovider但是 作为一个通用容器 arraycollection返回的应该是一个object
而不是as的user对象 这中间有一个转换过程 而flex是不可能自动帮你转化的 因为object在外部开起来是一样的要自动转化的话只有通过instance找到它的确切类型或者是要求在JAVA那边中表述清楚发过来的list中 包含的是那个类的对象 但是这样很不现实
也就是说 从arraycollection里面取出来的肯定是object对象 而obejct对象肯定是无法取得name这些字段的 所以 我不知道你是怎么获得最后的显示的 但是很多人都显示不出来 改一下才能正确显示
  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2009-07-10 14:03 | nijiaben
@hcg8827
呵呵,你之所以没有显示出来最大的可能是你配置上出错了,你点击Project->Properties->Flex Server,如果你的ROOT RUL显示类似为http://localhost:8080/FlexJava以及Context" target="_new" rel="nofollow">http://localhost:8080/FlexJava以及Context root为/WebRoot的话,那请你改成ROOT RUL显示为http://localhost:8080,而Context root的值改为/FlexJava,这是很多初学者最不注意的地方,你可以改了再试试  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2009-12-09 10:23 | jj
能不能介绍下项目环境,我知道你这东西是运行在java项目里面的还是单独的flex项目,再说了,remoting-config.xml,这个是flex内置的配置,还是给什么组件用的,你让我一个做java的看,我就觉得你这东西跑不起来,我连项目放什么地方我都不知道。发出来了就试试讲清楚,让一个一次都没做过flex的人可以依次运行,这才是高度  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2010-05-12 17:30 | yuqi

@nijiaben
我按你的说的路径进去了,但是他不让我配置,全部都是灰的!

请问是什么原因?
  回复  更多评论
  
# re: Flex与java交互之数据库数据读取[未登录]
2010-08-19 10:23 | ddd
sddd  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2011-08-10 23:16 | 不行
不行。。。。。。  回复  更多评论
  
# re: Flex与java交互之数据库数据读取[未登录]
2011-08-16 10:42 | wl

按照上面 的方法做了之后 有一个错误 怎么改
Unexpected text '  
    ' found in 'destination' from file: remoting-config.xml.  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2013-05-14 11:59 | liuxinye
你好,Flex与java交互之数据库数据写入,搞不懂,不知道怎么回事  回复  更多评论
  
# re: Flex与java交互之数据库数据读取[未登录]
2013-09-12 18:15 | Eric
按照以上代码,最终点击获取数据按钮后,直接error。请问是什么原因  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2013-12-30 10:07 |
我也是这样子的问题,不知最后是怎样解决的?@wl
  回复  更多评论
  
# re: Flex与java交互之数据库数据读取
2013-12-30 10:11 |
刚问完,删掉remoting-config文件的adapter-definition元素的default="true" />里面的空格就好了@斦  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: