- 浏览: 137160 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
Ken艹小哲:
太赞了 哥们 加扣
猜数字问题的最少步数算法. -
chenyuan122912:
...
解决AS3 Socket编程中最令人头疼的问题 -
hyx0914:
有源代码打包下载的吗?
Flex地图分块加载的实现 -
tianhai110:
非常有价值的 测试总结
时间效率,Timer和EnterFrame在FP 10.1之后测试和建议 -
763675117:
你好,fengxiangpiao,看了你的文档,我的需求和你差 ...
解决MovieClip打印问题 转
首先,做一点说明。Flex是不能直接连接数据库的,这一点大家需要知道,它只能间接地连接数据库。Flex中提供了三种方式:HttpService,WebService 和RemoteObject。其中HttpService可以直接获取XML中的数据,还可以通过JSP,ASP以及PHP读取数据库中的数据,这个比较简单,而且网上也有很多例子,我就不多说了。WebService我不懂,请自己查资料。我一直用的是JAVA对象连接数据库,感觉这个挺方便,而且J2EE的技术已经很成熟。今天的教程就是以 Flex + JAVA + SQLServer获取数据库公告信息为例简单说一下RemoteObject的用法。
前提
1.确保你安装了Flex Data Service。这个对于单个CUP无限APP是免费的,可以去Adobe下载。如果只是读取XML文件是不需要这个的,连接数据库就需要它了。
2.安装了Flex Builder或者有Flex SDK。我这里使用的是Flex Builder(IDE就是方便啊 ^_^)。
3.安装了SQLServer数据库。
4.安装了JRUN或者tomcat或其它的J2EE容器,因为发布的时候我们的程序要运行在J2EE平台上。
5.安装了JDK。
第一步:创建数据库
这里我们有一个公告表,表名为Bulletin。结构如下:
字段名称 字段类型 说明
ID 自动编号 自动编号
title Nvarchar(100) 题目
date datatime 日期
author Nvarchar(20) 作者
content ntext 内容
在数据库中创建这个表。保存之后进入下一步。
第二步:在JAVA中编写获取公告的代码
首先,我们要创建一个公告类来专门保存获取的公告信息,代码如下。
NoticeInfo.java
package net.zhuoqun.connectDB;
import java.util.Date;
public class NoticeInfo {
private String title; // 标题
private String author; // 作者
private String content;// 内容
private Date dates; // 时间
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
……………… // 其它get 和 set 方法。
}
创建好这个之后我们要创建一个数据查询类:DataServiceImpl.java来查询数据库,并将查询结果传给将要创建的Flex程序。由于我们不清楚有多少条记录,所以就借助一下JAVA中的ArrayList这个类,它位于java.util 包中。先创建一个ArrayList:
ArrayList noticeList = new ArrayList();
查询数据库之后,每读取一条记录就添加到 noticeList。
while(rs.next()){
NoticeInfo temp = new NoticeInfo();
temp.setAuthor(rs.getString("author"));
temp.setContent(rs.getString("content"));
temp.setDates(rs.getDate("date"));
temp.setTitle(rs.getString("title"));
noticeList.add(temp);
}
查询完毕之后你就可以把这个noticeList传回去,你也可以传回去一个 NoticeInfo 数组:
NoticeInfo[] notices = new NoticeInfo[noticeList.size()];
for(int i=0;i<noticeList.size();i++){
notices = (NoticeInfo)noticeList.get(i);
}
return notices;
我这里用的是后一种方法。如果你直接把noticeList传回去的话,记住一点,JAVA的ArrayList类型的对象到了Flex中会变成ArrayCollection类型的。
现在JAVA部分的代码就写好了。
DataServiceImpl.java 的全部代码如下:
package net.zhuoqun.connectDB;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
public class DataServiceImpl {
private Connection conn = null;
private Statement stmt = null;
// 以下是数据库以及驱动信息
public final static String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
public final static String CONN_STR_PRE = "jdbc:microsoft:sqlserver://";
public final static String HOST_NAME = "localhost:1433;";
public final static String DATABASE_NAME = "DatabaseName=mydata";
public final static String USERNAME = "aaa";
public final static String PASSWORD = "aaa";
public DataServiceImpl(){
}
// 查询数据库
private ResultSet executeQuery(String sqlText){
try{
Class.forName(DRIVER);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
conn = DriverManager.getConnection(CONN_STR_PRE + HOST_NAME + DATABASE_NAME, USERNAME, PASSWORD);
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sqlText);
return rs;
}catch(SQLException e){
e.printStackTrace();
}
return null;
}
// 查询公告. 这个是本程序的关键代码
public NoticeInfo[] getNotices(){
ArrayList noticeList = new ArrayList();
String sqlText = "select author,content,date,title from Bulletin";
ResultSet rs = executeQuery(sqlText);
try{
while(rs.next()){
NoticeInfo temp = new NoticeInfo();
temp.setAuthor(rs.getString("author"));
temp.setContent(rs.getString("content"));
temp.setDates(rs.getDate("date"));
temp.setTitle(rs.getString("title"));
noticeList.add(temp);
}
NoticeInfo[] notices = new NoticeInfo[noticeList.size()];
for(int i=0;i<noticeList.size();i++){
notices = (NoticeInfo)noticeList.get(i);
}
return notices;
}catch(SQLException e){
e.printStackTrace();
return null;
}
}
}
第三步: 配置Flex Data Service
1,把刚才写的JAVA文件编译。打开FDS的安装文件夹,将编译的文件拷贝到\jrun4\servers\default\flex\WEB-INF\classes 文件夹中,进行下面的配置。
2.打开FDS的安装文件夹。进入jrun4\servers\default\flex\WEB-INF\flex 目录。里面是关于FlexData Service的配置文件,我们这里只看RemoteObject如何配置,其它配置信息请自己看帮助。现在我们打开里面的remoting-config.xml文件。向里面添加如下信息,作为<service>的子标签:
程序代码
<destination id="dataService">
<properties>
<source>net.zhuoqun.connectDB.DataServiceImpl</source>
</properties>
</destination>
当你设定了 destination的时候,你就引用了了可以用来连接相应类的信息通道(messaging channel)。它的id必须在文件中是独一无二的。source属性是指你编译的JAVA类在classes文件夹中的路径。由于我的DataServiceImpl类在classes\net\zhuoqun\connectDB中,所以source的值为net.zhuoqun.connectDB.DataServiceImpl。记住,不要写.class后缀。<properties>标签还可以有一个<scope>子标签,其作用我在这里就不说了,大家自己看相关文档(关于FDS的配置其实有很多东西,这些在帮助文档里都有,我这里不多说了,也说不过来,自己看吧)。
现在我们已经配置好了后台的 FDS,做完了整个程序的大部分工作,接下来就是前台Flex程序调用的事情了。
第四步:创建Flex程序
打开Flex Builder,新建一个工程 ConnectDB。菜单栏中 File -> New -> Flex Project,这时会弹出一个对话框,选择 Flex Data Service,创建了一个Flex工程。
第五步:通过 RemoteObject 访问数据库
打开工程中生成的主文件 ConnectDB.mxml,声明一个 RemoteObject :
程序代码
<mx:RemoteObjectid="getData" destination="dataService"result="proccessResult(event.result)"fault="Alert.show(event.fault.faultString,'Error')"/>
其中destination 的值是刚才我们在配置 FDS 的时候设定的 destination。 result 表示在这个RemoteObject成功返回之后所要做的动作,这里我们调用一个方法 proccessResult()来处理返回的数据,它的参数 event.result就是从服务器段获得的数据,数据是作为一个对象传过来的。 fault表示在这个RemoteObject请求失败时要做的处理,这里我们会弹出一个显示错误信息的对话框。接下来我们要声明一个DataGrid控件来显示公告的标题和发布日期:
程序代码
<mxataGrid id="myDG">
<mx:columns>
<mxataGridColumn headerText="标题" dataField="title"/>
<mxataGridColumn headerText="发布日期" dataField="dates" labelFunction="formatDate"/>
</mx:columns>
</mx:DataGrid>
其中headerText是显示在上方的表头,dataField表示要显示的数据域,为什么数据域是title和dates呢?因为我们传回的是一个NoticeInfo 对象数组,虽然它是作为一个对象传回来的,但是其中的数据结构并没有变,那些数据域的名字也没有变,所以我们可以根据NoticeInfo 中的变量设定dataField。labelFunction属性是用来格式化显示的,因为传回来的是格林威治时间,所以我们需要将其格式化然后显示出来。注意,这里只是显示两个数据域,并不代表其它的数据都没有了,它们仍然存在,只是没有显示出来。
接下来,在 <mx:Script> 标签中编写proccessResult()方法和格式化日期的 formatDate方法:
程序代码
private function proccessResult(result:Object):void
{
myDG.dataProvider = ArrayUtil.toArray(result);
}
private function formatDate(item:Object,column:DataGridColumn):String
{
return df.format(item.dates);
} // df 是一个 DateFormatter,在下面会给出。关于如何格式化DataGrid的显示
// 以及DateFormatter这里就不讨论了,帮助里写得很清楚
这个函数只是简单地将获得的数据传给 myDG 的 dataProvider。result的类型是Object,因为数据是作为一个对象传过来的。之所以调用 ArrayUtil.toArray()这个方法,是因为返回的记录可能只有一条,而myDG 的 dataProvider显示单个对象的时候可能会出错,所以安全起见先将其转换成数组。
最后,我们编写调用 RemoteObject 的方法,使其在程序启动时就调用。
程序代码
private function initApp():void
{
getData.getNotices();
}
其中 getData 是RemoteObject的id,getNotices()是DataServiceImpl.java中的方法。在这里可以直接调用它。当然,如果DataServiceImpl.java有其它方法,也可以通过这种方式直接调用。接下来设定组件创建完毕时调用 initApp()方法,在<mx:Application>中添加一个creationComplete属性:
程序代码
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" creationComplete="initApp()">
ConnectDB.mxml的全部代码:
程序代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.utils.ArrayUtil;
private function initApp():void
{
getData.getNotices();
}
private function proccessResult(result:Object):void
{
myDG.dataProvider = ArrayUtil.toArray(result);
}
private function formatDate(item:Object,column:DataGridColumn):String
{
return df.format(item.dates);
}// df 是一个 DateFormatter,在下面会给出。关于如何格式化DataGrid的显示
// 以及DateFormatter这里就不讨论了,帮助里写得很清楚
]]>
</mx:Script>
<mx:DateFormatter id="df" formatString="YYYY-MM-DD"/>
<mx:RemoteObject id="getData" destination="dataService"result="proccessResult(event.result)"fault="Alert.show(event.fault.faultString,'Error')"/>
<mx:DataGrid id="myDG">
<mx:columns>
<mx:DataGridColumn headerText="标题" dataField="title"/>
<mx:DataGridColumn headerText="发布日期" dataField="dates" labelFunction="formatDate"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
整个工程终于完成,启动JRUN,然后运行程序,查看程序结果
如果是其他数据库,只需要改一下数据库驱动信息就可以了
发表评论
-
最全的Flex网站
2011-10-15 23:18 722一、国外站点 1.资源 类Adobe Flex 2 ... -
时间效率,Timer和EnterFrame在FP 10.1之后测试和建议
2011-04-23 22:19 1056关于Timer还是EnterFrame的选择,一直是很 ... -
时间效率,Timer 和 EnterFrame 在 FP 10.1 之后测试和建议
2011-04-23 22:16 1059关于Timer还是EnterFrame的选择,一直是很多AS3 ... -
Socket粘包问题
2011-04-22 23:21 1027这些天做类似QQ空间的 ... -
关于Flash Socket通信的安全策略问题的一点心得
2011-04-22 22:36 697昨天做测试的时候遇到 ... -
FLEX入门实例--------FLEX全屏功能实现及右键菜单
2011-03-26 11:58 815FLEX的全屏功能的实现,光写AS还不够,还需要对JS部分做一 ... -
flex中的Text属性
2010-12-08 12:31 872不同于Lable只显示单行文本,Text可以显示多行文本, ... -
Flex跨域问题
2010-11-08 17:55 790From ESRI: The client brow ... -
Flex屏蔽并自定义鼠标右键菜单(转载)
2010-11-08 17:53 878最近手头有个项目需要屏蔽Flex鼠标右键菜单并自定义新的fle ... -
使用 IBM Rational Functional Tester 7.0.1 测试 Flex 应用程序
2010-11-05 21:45 838关于这篇文章必要的信息 这篇文章假定您已经对使用 IBM® ... -
在 Ajax 应用程序中实现实时数据推送
2010-11-05 21:40 667简介 Ajax 技术已经存在了一段时间,开发的动力已经真正开 ... -
使用 Flex 和 Dojo 开发交互式Web应用程序
2010-11-05 21:38 989引言 以用户体验为核 ... -
Flex 应用内存泄露的分析与诊断
2010-11-05 21:36 802引言 Flex 采用 ActionScrip ... -
flex SystemManger
2010-11-05 16:35 689软件编程牛人网 Framework Fundamentals ... -
Flex 不同 application 之间传参数
2010-11-05 16:33 486软件编程牛人网 通过主影片来获得所有子影片的systemma ... -
如何在flash保留小数位
2010-11-04 20:07 824在家上网赚钱更容易 fl ... -
实例讲解Flex3的SharedObject对象用法
2010-11-04 16:01 757在家上网赚钱更容易 Flex中的SharedObj ... -
Flex中12个最基本、最简单但却最有用的函数
2010-11-04 15:54 690在家上网赚钱更容易 No.1 复制内容到剪贴板 S ... -
谈谈Flex中ArrayCollection的复制(克隆)
2010-11-04 15:51 718在家上网赚钱更容易 在Flex的开发过程中,常常会遇到复 ... -
flex中的拖放操作(一)
2010-11-04 15:47 931在家上网赚钱更容易 可视化的开发环境最大的特点是允许你在 ...
相关推荐
本教程将重点介绍使用RemoteObject连接数据库的方法,以Flex + JAVA + SQLServer获取数据库公告信息为例。 1. **HttpService**: HttpService主要用来与服务器进行HTTP通信,它可以获取XML或其他格式的数据。通过...
在本文中,我们将探讨如何使用Adobe Flex连接到数据库,主要关注使用RemoteObject的方法。Flex本身并不直接支持数据库连接,而是通过HTTP服务、Web服务或RemoteObject与服务器端进行通信,从而间接获取数据库数据。...
根据给定的文件信息,以下是关于“Flex连接数据库的三种方法”的详细知识点: ### Flex连接数据库的方法概述 Flex是Adobe公司推出的一种用于构建高性能、高交互性的RIA(Rich Internet Applications)的应用程序...
本文将详细介绍Flex连接数据库的三种常用方式:HttpService、WebService以及RemoteObject,并以Flex 3.0 + Java + SQL Server为例,重点讲解如何使用RemoteObject来获取数据库中的公告信息。 #### HttpService简介 ...
【Flex连接数据库的三种方法详解】 Flex作为一款强大的RIA(富互联网应用)开发框架,虽然无法直接连接数据库,但它可以通过几种间接方式与数据库交互。在本文中,我们将深入探讨Flex连接数据库的三种主要方法:...
总之,Flex连接数据库的方法涉及多种组件和策略,开发者可以根据具体需求选择合适的方式。在实际应用中,结合服务器端的技术(如Java、PHP或.NET)和数据服务,可以构建出高效、安全的富互联网应用程序。
在Flex开发中,连接数据库是实现数据交互的关键步骤。Flex是一种基于ActionScript的开源框架,主要用来构建富互联网应用程序(RIA)。以下将详细介绍如何在Flex中连接和操作数据库。 一、选择数据库驱动 Flex可以与...
总结来说,这个“flex连接数据库实例”涵盖了Flex应用程序的基本结构,以及如何通过RemoteObject与后端服务器通信来实现数据库操作。它涉及到Flex编程、数据服务、事件处理等多个方面,对于学习Flex开发和数据库集成...
flex 连接mysql数据库 flex 连接mysql数据库
总的来说,Flex连接数据库 .NET 2.0的过程涉及了Web服务的创建、数据库操作、Flex客户端的HTTPService调用以及数据展示等多个环节。理解并掌握这些知识点,对于开发跨平台的、数据驱动的Flex应用程序至关重要。通过...
本教程将详细讲解如何使用Flex与数据库进行通信,包括连接MySQL数据库,以及在开发过程中可能遇到的问题及其解决方案。 1. **Flex与数据库的通信基础** Flex可以通过AMF(Action Message Format)或HTTP服务与...
Flex是Adobe开发的一种用于创建富互联网应用程序(RIA)的框架,它主要由Flex SDK和Flex Builder两部分组成。本教程将详细介绍如何使用Flex Builder 3连接到MySQL数据库,通过PHP作为中间层进行数据交互。 首先,...
flex连接数据库,通过php存储。前台文件为mxml,后台处理为php文件
一、Flex与C#连接数据库 1. **数据访问层(DAL)**:在C#环境中,通常使用ADO.NET作为数据访问层,它提供了对SQL Server、Oracle等数据库的直接访问。在Flex中,我们可以使用AMFPHP或BlazeDS来建立与C#服务的通信...
三、Flex数据库操作基础 1. 引入库:在Flex项目中,需要引入相关的库,如mx.rpc.soap和flex.data.services,以支持远程服务调用和数据访问。 2. 定义数据模型:在Flex中创建ActionScript类,这些类通常对应于...
在这个示例中,我们将探讨如何利用 FluorineFX 将 Flex 前端与 ASP.NET 后端相结合,从而连接到数据库并执行基本的数据操作。 首先,Flex 部分的 MXML 代码展示了如何创建一个简单的应用程序,其中包括一个 ...