您的位置:首页 > 数据库

flashremoting实践(四)-调用数据库for .net

2005-10-29 11:58 316 查看
现在,我们来学习一下remoting怎么通过.net环境来调用数据库内容,在这里我假设你已经读过我写的关于配置和.net下的hello world程序,并 已经理解了,remoting的概念,如果你还没懂,那么我建议你先去看看我的那两篇文章,另外下面我所讲的和ado.net的简单知识有关,所以请对ado.net没有什么了解的朋友,先去看一下有关ado.net的资料,掌握之后再重新回头来看我下面的文章,由于,前几篇文章,我已经对remoting配置,和基本程序写法做了细致的描述,所以下面我所讲的对于涉及到以前的内容,我基本上会一笔代过,所以请一定要先详细的看我的前几篇文章,然后再回头来看这篇文章,否则对于初学者可能看完了仍然一头雾水,好了,废话我说完了,下面开始进入主题。

1.首先请做一些学习前的准备工作,首先请先建立一个数据库(我建立的是access数据库,因为他不需要太多的配置,讲解起来还容易,嘿嘿!!!),好了,如果你的.net环境已经配置好了,那么我们现在开始吧。

2.首先在虚拟目录下建立一个名字为adoTest的文件夹,把flashremoting文件夹下的bin文件夹,和gateway.aspx,web.config全部拷贝到adoTest文件夹下,在adoTest文件夹下新建一个database的文件夹,然后把你建立好的access数据库放到这个文件夹里,然后在计算机管理里面讲这个文件夹设置为应用程序(具体设置方法,请参看我前面的文章),好了,基本工作做完了。

3.下面在adoTest文件夹下新建一个asp.net页面,取名为usingAdo.aspx,然后我们来看看usingAdo.aspx的代码。

4.首先当然还是注册和导入所需要的类,代码如下:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Page language="vb" debug="true" %>
<%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %>
<Macromedia:Flash ID="Flash" runat="server"/>

请注意这段代码:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

这是.net调用非sql数据库所必须的,所以不可以省略。

之后是我们用.asp.net来调用数据库的代码,代码如下:

dim conn as oledbconnection
dim adpt as oledbdataadapter
dim ds as dataset
dim provider="provider=Microsoft.Jet.OLEDB.4.0"
dim database="data source=" & server.mappath("database/student.mdb")
Conn = New OleDbConnection( Provider & ";" & DataBase )
conn.open()
dim sql
sql="select * from cs"
adpt=new oledbdataadapter(sql,conn)
ds=new dataset()
adpt.fill(ds,"cs")

在这里我调用的是asp.net当前文件夹的上一级的database文件夹下的student.mdb数据库(什么你的数据库没有放在这,那让程序去找到你的数据库啊!!!),然后执行sql语句,把从数据库里返回的值放到dataset对象里(也就是ds对象)。

下面的比较重要,代码如下:

flash.datasource=ds.tables("cs")
flash.databind()

看到了没有,remoting的功能就是这么强大,直接绑定到我们之前定义的flash对象里就可以了,呵呵,书写的方法,和ado.net里的databind很像哦!!!
好了基本的代码就是这样,下面看一下全部代码,代码如下:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %><%@ Page language="vb" debug="true" %>
<%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %>
<Macromedia:Flash ID="Flash" runat="server"/>
<script runat="server">
sub page_load(sender as object,e as eventargs)
dim conn as oledbconnection
dim adpt as oledbdataadapter
dim ds as dataset
dim provider="provider=Microsoft.Jet.OLEDB.4.0"
dim database="data source=" & server.mappath("database/student.mdb")
Conn = New OleDbConnection( Provider & ";" & DataBase )
conn.open()
dim sql
sql="select xuehao,name,xi,ji,ban from cs"
adpt=new oledbdataadapter(sql,conn)
ds=new dataset()
adpt.fill(ds,"cs")
flash.datasource=ds.tables("cs")
flash.databind()
conn.close()
end sub
</script>

其实这里比较关键的就是

flash.datasource=ds.tables("cs")
flash.databind()

这两句,因为其他的代码都是关于.net调用数据库的部分,相信对.net有了解的朋友都会,我在这里也就不多废话了

5.下面来看一下flash端的代码。

6.首先在舞台上拖一个datagrid组件取名为custCountry_grd,然后把RemotingClasses类拖到舞台上然后在第一真加命令,首先是导入我们需要的类,代码如下:

import mx.remoting.Service;
import mx.remoting.PendingCall;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;

7.然后建立service对象,建立连接,代码如下:

var custCountryASPX:Service = new Service("http://localhost/adoTest/gateway.aspx",
null, "adoTest", null, null);

(具体的是怎么找到我们的usingAdo.aspx,我不在讲解了,如果你还是不明白,那么请看我的前几篇文章)

8.下面需要建立pendingcall对象去调用usingAdo方法,代码如下:

var pc:PendingCall = custCountryASPX.usingAdo();

9.接下来是设定传回值的方法,代码如下:

pc.responder = new RelayResponder(this, "gotCountries", "gotFault");

10.下面是方法的实现,代码如下:

function gotCountries(re:ResultEvent):Void {
custCountry_grd.dataProvider = re.result;
// got a RecordSet back in result
}
function gotFault(fe:FaultEvent):Void {
trace("error-"+fe.fault.faultstring);
}

好了,工作完成了,完成的代码如下:

import mx.remoting.Service;
import mx.remoting.PendingCall;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
var custCountryASPX:Service = new Service("http://localhost/adoTest/gateway.aspx",
null, "adoTest", null, null);
var pc:PendingCall = custCountryASPX.usingAdo();
pc.responder = new RelayResponder(this, "gotCountries", "gotFault");
function gotCountries(re:ResultEvent):Void { custCountry_grd.dataProvider = re.result; // got a RecordSet back in result } function gotFault(fe:FaultEvent):Void { trace("error-"+fe.fault.faultstring); }

还等什么,马上去测试吧,如果配置方面没什么问题,你会看到你数据库里的数据已经显示在datagrid组件里了。

当然这是一个比较简单的例子,并没有对传回的值进行在加工,你大可以把传回的值放到flash的dataset里,然后进行再加工,这要靠你个人的功力了,我只是像你提供了调用数据库的方法。

下一节,我将向大家介绍java环境下调用数据库的方法,敬请期待…………
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐