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(); } } }