任何一个网络工具, 如果不能和数据打交道,那它就是失败的。
还好Flex是可以的,由于本人刚学,就用asp.net+c#来讲下这个简单的连接。
Flex 和数据库通讯现在只能使用Service,如httpservice,rpcservice,webservice等等。
如果还有其他的,抱歉,我还没学。。。
现在开始:
首先建个 WebService.
Code
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
/// <summary>
/// GetXMLDataService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class GetXMLDataService : System.Web.Services.WebService {
public GetXMLDataService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string GetXMLData(string sqlCommand) {
string sqlConnectionString = ConfigurationManager.ConnectionStrings["testconn"].ToString();
DataSet ds = new DataSet();
ds = SqlHelper.ExecuteDataset(sqlConnectionString, CommandType.Text, sqlCommand);
string xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \n";
return xmlStr+ds.GetXml();
}
}
这个Web服务有个方法,访问数据库,并返回一个标准的xml字符串。
注意 string xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \n";
如果不加这条,那在Flex中不能格式化成xmllist。
现在来看Flex的。
Code
<mx:WebService id="GetXMLDataService"
wsdl="http://localhost:4512/Flex/GetXMLDataService.asmx?wsdl"
showBusyCursor="true" useProxy="false">
<mx:operation name="GetXMLData" result="formatResult();">
<mx:request>
<sqlCommand>
<!-- {sqlCommand} -->
{txtSqlCommand.text}
</sqlCommand>
</mx:request>
</mx:operation>
</mx:WebService>
上面代码是表示如何使用 这个Web服务。http://localhost:4512/Flex/GetXMLDataService.asmx?wsdl 这个是我web服务运行的本机地址。
这个是获取数据并格式化数据
Code
// 格式化通过WebService获取的数据 Type: XMLList
private function formatResult():void{
xmlData = new XML(GetXMLDataService.GetXMLData.lastResult);
this.columnchart1.dataProvider = xmlData.children();
BindData();
}
其中 BindData() 是自己写的绑定控件数据方法。可以删除。
测试运行, 首先运行 web服务, 并保证 http://localhost:4512/Flex/GetXMLDataService.asmx?wsdl 能够访问。
这个是测试我是绑定一个ColumnChart。图片就懒放上来了。 抓图累。。。。。