flex3通过fluorinefx跟asp.net进行数据交互

这几天不太忙把原来的一些小的示例整理一下,这个示例是一个简单的通过fluorinefx与asp.net结合来时间flex连接数据库的.因为一直以来flex+java大家都认为是最好的搭档但是asp.net也是很好的选择,个人认为asp.net的效率要比java的高.好了现在进入正题.

      flex部分代码如下:

mxml文件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" creationComplete="fs.GetData();" fontSize="13">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
//获得数据后的处理函数
public function GetDataHandle(e:ResultEvent):void
{
//获得的数据绑定至DataGrid组件
dg.dataProvider=e.result.tables.serverInfo.initialData as Array;
}
//插入数据成功后的处理函数
public function InsertDataHandle(e:ResultEvent):void
{
//提示插入成功
Alert.show("插入数据成功");
//重新获取数据
fs.GetData();
}
]]>
</mx:Script>
<mx:Panel width="474" height="489" title="通知">
<mx:DataGrid id="dg">
<mx:columns>
<mx:DataGridColumn headerText="编号" dataField="0"/>
<mx:DataGridColumn headerText="标题" dataField="1"/>
<mx:DataGridColumn headerText="内容" dataField="2"/>
<mx:DataGridColumn headerText="发布者" dataField="3"/>
</mx:columns>
</mx:DataGrid>
<mx:Canvas width="395" height="243">
<mx:Label x="37" y="27" text="标题"/>
<mx:TextInput x="80" y="25" id="txtTitle"/>
<mx:Label x="37" y="155" text="发布者"/>
<mx:TextInput x="80" y="153" id="txtPublisher"/>
<mx:Label x="37" y="53" text="内容"/>
<mx:TextArea x="80" y="55" width="278" height="90" id="txtContent"/>
<mx:Button x="121" y="198" label="添加" id="btnInsert" click="fs.InsertData(txtTitle.text,txtContent.text,txtPublisher.text);"/>
</mx:Canvas>
</mx:Panel>
<mx:RemoteObject
destination="fluorine"
id="fs"
source="remoting.GetSQLServer2000Data"
showBusyCursor="true"
>
<mx:method
name="GetData"
result="GetDataHandle(event)"
/>
<mx:method
name="InsertData"
result="InsertDataHandle(event)"
/>
</mx:RemoteObject>
</mx:Application>
flex里的services_config.xml这个文件是一个配置文件就好比asp.net里的webconfig意思差不多吧都是xml结构,这个文件要跟mxml文件放在一个路径下文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="remoting-service"
class="flex.messaging.services.RemotingService"
messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="fluorine">
<channels>
<channel ref="my-amf"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://localhost:6199/WebSite2/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
好了到现在为止flex部分的文件已经完全展现给大家了.
 
下面是asp.net部分
 
首先确定在机器里已经安装了fluorinefx,现在fluorinefx已经可以支持在vs2008中使用了
打开vs2008或vs2005以后在就会出现一个fluorinefx的选项,建立好以后就可以通过修改cs代码来实现连接数据库的功能
代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;//引用“System.Data.SqlClient”
using System.Collections;//引用“System.Collections”
using FluorineFx.Management.Web;
using FluorineFx;
/// <summary>
/// GetSQLServer2000Data 的摘要说明
/// </summary>
namespace remoting //名称空间,可自定义
{
[RemotingService()]
public class GetSQLServer2000Data
{
public GetSQLServer2000Data()
{
}
public DataSet GetData()//获得数据库数据
{
SqlConnection conn = new SqlConnection();//定义“SqlConnnection”类实例
//数据库连接字符串
conn.ConnectionString = "Data Source=.;Initial Catalog=School;Persist Security Info=True;User ID=sa;Password=sa";
//定义“SqlCommand”实例,从“Notes”表中取数据
SqlCommand command = new SqlCommand("select * from Notes", conn);
conn.Open();//打开连接
SqlDataAdapter da = new SqlDataAdapter();//定义“SqlDataAdapter”类实例
da.SelectCommand = command;//将“command”值传递给“SqlDataAdapter”的“SelectCommand”属性
DataSet ds = new DataSet();//定义“DataSet”类实例
da.Fill(ds, "tables");//取数据
//关闭数据库
conn.Close();
return ds;
}
public void InsertData(string title, string content, string publisher)//插入数据
{
SqlConnection conn = new SqlConnection();//定义“SqlConnnection”类实例
//数据库连接字符串
conn.ConnectionString = "Data Source=.;Initial Catalog=School;Persist Security Info=True;User ID=sa;Password=sa";
SqlCommand command = new SqlCommand("select Max(noteId) from Notes", conn);
conn.Open();//打开连接
SqlDataAdapter da = new SqlDataAdapter();//定义“SqlDataAdapter”类实例
da.SelectCommand = command;//将“command”值传递给“SqlDataAdapter”的“SelectCommand”属性
DataSet ds = new DataSet();//定义“DataSet”类实例
da.Fill(ds, "tables");//取数据
string newid = (Convert.ToInt32(ds.Tables["tables"].Rows[0][0].ToString()) + 1).ToString();
command = new SqlCommand("insert into Notes values('" + newid + "','" + title.Trim() + "','" + content.Trim() + "','" + publisher.Trim() + "')", conn);
command.ExecuteNonQuery();
conn.Close();
}
}
}
posted @ 2009-03-30 21:05  杨子宜  阅读(985)  评论(2编辑  收藏  举报