flex连接数据库总结
flex连接数据库总结
2010年01月11日
首先,做一点说明。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;iFlex中会变成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_