从SQL数据库检索表
问题描述:
正如标题所说,我想使用Flex 4和.Net WebService从SQL数据库检索数据表。从SQL数据库检索表
我是新来的Flex和DotNet。请告诉我一个正确的方法来做到这一点。
这是我迄今所做的:
检索字符串数组:(这部作品)
的.Net:
[WebMethod]
public String[] getTestArray()
{
String[] arStr = { "AAA", "BBB", "CCC", "DDD" };
return arStr;
}
的Flex 4:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
private var ac:ArrayCollection = new ArrayCollection();
protected function btn_clickHandler(event:MouseEvent):void
{
ws.getTestArray();
}
protected function ws_resultHandler(event:ResultEvent):void
{
ac = event.result as ArrayCollection;
Alert.show(ac.toString());
}
]]>
</fx:Script>
<fx:Declarations>
<s:WebService id="ws" wsdl="http://localhost:50582/Service1.asmx?WSDL" result="ws_resultHandler(event)"/>
</fx:Declarations>
<s:Button x="10" y="30" label="Button" id="btn" click="btn_clickHandler(event)"/>
</s:Application>
检索数据表:(这不起作用)
DOTNET的:
[WebMethod]
public DataTable getUsers()
{
DataTable dt = new DataTable("Users");
SqlConnection conn = new SqlConnection("server = 192.168.1.50; database = MyDatabase; user id = sa; password = 1234; integrated security = false");
SqlDataAdapter da = new SqlDataAdapter("select vFName, vLName, vEmail from Users", conn);
da.Fill(dt);
return dt;
}
的Flex 4:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
[Bindable]
private var ac:ArrayCollection = new ArrayCollection();
protected function btn_clickHandler(event:MouseEvent):void
{
ws.getUsers();
}
protected function ws_resultHandler(event:ResultEvent):void
{
ac = event.result as ArrayCollection;
Alert.show(ac.toString());
}
]]>
</fx:Script>
<fx:Declarations>
<s:WebService id="ws" wsdl="http://localhost:50582/Service1.asmx?WSDL" result="ws_resultHandler(event)"/>
</fx:Declarations>
<s:Button x="10" y="30" label="Button" id="btn" click="btn_clickHandler(event)"/>
</s:Application>
答
我也是新来的Flex和我具有和你一样的问题。我对你做的唯一一件事是填充一个数据集,而不是数据表中的dataadapter在我的web服务中。使用FlashBuilder 4网络监视器我可以看到,我的数据实际上已到达Flex应用程序,因此Web服务工作正常,但我的问题是我无法让我的下拉列表填充。 作为参考,我还从Webservice向我的Flex应用程序发送了一个字符串,它与您的“检查”一样也起作用。不过,我确实看到网络监视器中的两个结果之间存在差异,在我看到数据集中的数据之前,必须进行更深入的钻取。 麻烦的是,如果这意味着我已经给我的dropdownlist字段提供了一个更长的名称来获取数据,但我明白这是我的任务,所以我太新了。 也许这是一个想法让你尝试。
答
我发现一些谷歌搜索后的答案,所以我张贴在这里传播爱。
首先创建一个变量来保存结果
[Bindable]
private var DotNetData:ArrayCollection;
然后在你的处理器
protected function ws_resultHandler(event:ResultEvent):void
{
DotNetData = event.result.Tables.ListData.Rows;
resultsDg.dataProvider = DotNetData;
}
在这个例子中 “resultsDg” 只是一个数据网格。 “ListData”是指从响应XML中的“msdata:MainDataTable”元素获取的数据表名。