Flex 如何使用JAVA对象连接SQLServer数据库.doc_第1页
Flex 如何使用JAVA对象连接SQLServer数据库.doc_第2页
Flex 如何使用JAVA对象连接SQLServer数据库.doc_第3页
Flex 如何使用JAVA对象连接SQLServer数据库.doc_第4页
Flex 如何使用JAVA对象连接SQLServer数据库.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Flex如何使用JAVA对象连接SQLServer数据库首先,做一点说明。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。JDK版本问题:由于我用的是Flex Data Service自带的JRUN,它不支持JDK5.0,所以我用的是JDK1.4.2,版本问题大家看具体情况来。第一步:创建数据库这里我们有一个公告表,表名为Bulletin。结构如下:程序代码字段名称字段类型说明ID自动编号自动编号titleNvarchar(100)题目datedatatime日期author Nvarchar(20)作者contentsntext内容在数据库中创建这个表。保存之后进入下一步。第二步:在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(); / 这里我没有用泛型,因为我用的JDK1.4.2.查询数据库之后,每读取一条记录就添加到 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 NoticeInfonoticeList.size();for(int i=0;inoticeList.size();i+)noticesi = (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)tryClass.forName(DRIVER);catch(ClassNotFoundException e)e.printStackTrace();tryconn = 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);trywhile(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 NoticeInfonoticeList.size();for(int i=0;inoticeList.size();i+)noticesi = (NoticeInfo)noticeList.get(i);return notices;catch(SQLException e)e.printStackTrace();return null;第三步: 配置Flex Data Service1,把刚才写的JAVA文件编译。打开FDS的安装文件夹,将编译的文件拷贝到jrun4serversdefaultflexWEB-INFclasses 文件夹中,进行下面的配置。2.打开FDS的安装文件夹。进入 jrun4serversdefaultflexWEB-INFflex 目录。里面是关于Flex Data Service 的配置文件,我们这里只看RemoteObject如何配置,其它配置信息请自己看帮助。现在我们打开里面的 remoting-config.xml 文件。向里面添加如下信息,作为的子标签:程序代码 net.zhuoqun.connectDB.DataServiceImpl 当你设定了 destination 的时候,你就引用了了可以用来连接相应类的信息通道(messaging channel)。它的 id 必须在文件中是独一无二的。 source属性是指你编译的JAVA类在classes文件夹中的路径。由于我的DataServiceImpl类在classesnetzhuoqunconnectDB中,所以source的值为net.zhuoqun.connectDB.DataServiceImpl。记住,不要写.class后缀。 标签还可以有一个子标签,其作用我在这里就不说了,大家自己看相关文档(关于FDS的配置其实有很多东西,这些在帮助文档里都有,我这里不多说了,也说不过来,自己看吧)。现在我们已经配置好了后台的 FDS,做完了整个程序的大部分工作,接下来就是前台Flex程序调用的事情了。打开Flex Builder,新建一个工程 ConnectDB。菜单栏中 File - New - Flex Project,这时会弹出一个对话框,选择 Flex Data Service最下面的,如图:其中还有两个编译选项,分别是“在Flex Builder中本地编译”(编译成SWF和HTML页放到服务器)和“当用户浏览页面时再编译”,你可以根据需要选择,这里我们选择第一个。接下来设置FDS服务器的根目录和路径:输入工程的名称和目录:然后点击下一步设定类路径以及输出文件夹等等:这些都设定好之后点击 完成 就创建了一个Flex工程。第五步:通过 RemoteObject 访问数据库打开工程中生成的主文件 ConnectDB.mxml,声明一个 RemoteObject :程序代码其中 destination 的值是刚才我们在配置 FDS 的时候设定的 destination。 result 表示在这个RemoteObject 成功返回之后所要做的动作,这里我们调用一个方法 proccessResult()来处理返回的数据,它的参数 event.result 就是从服务器段获得的数据,数据是作为一个对象传过来的。 fault 表示在这个RemoteObject请求失败时要做的处理,这里我们会弹出一个显示错误信息的对话框。接下来我们要声明一个DataGrid控件来显示公告的标题和发布日期:程序代码其中headerText是显示在上方的表头,dataField表示要显示的数据域,为什么数据域是title和dates呢?因为我们传回的是一个 NoticeInfo 对象数组,虽然它是作为一个对象传回来的,但是其中的数据结构并没有变,那些数据域的名字也没有变,所以我们可以根据 NoticeInfo 中的变量设定dataField。labelFunction 属性是用来格式化显示的,因为传回来的是格林威治时间,所以我们需要将其格式化然后显示出来。注意,这里只是显示两个数据域,并不代表其它的数据都没有了,它们仍然存在,只是没有显示出来。接下来,在 标签中编写proccessResult()方法和格式化日期的 formatDate方法:程序代码private function proccessResult(result:Object):voidmyDG.dataProvider = ArrayUtil.toArray(result);private function formatDate(item:Object,column:DataGridColumn):Stringreturn df.format(item.dates);/ df 是一个 DateFormatter,在下面会给出。关于如何格式化DataGrid的显示/ 以及DateFormatter这里就不讨论了,帮助里写得很清楚这个函数只是简单地将获得的数据传给 myDG 的 dataProvider。result 的类型是Object,因为数据是作为一个对象传过来的。之所以调用 ArrayUtil.toArray() 这个方法,是因为返回的记录可能只有一条,而myDG 的 dataProvider显示单个对象的时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论