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

现在,我们来学习一下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环境下调用数据库的方法,敬请期待…………

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值