• ICONflash与数据库的交互

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://earm.blogbus.com/logs/41565753.html

    ---------------------------------------------------------------------------------

    flash似乎无法和Access、SQL Server等数据库进行直接的交互,其具体原因不得而知,我想应该是出于安全性的考虑吧。目前较为通用的flash与数据库交互方式是使用一个中间层(ASP、PHP、JSP等),将flash传出的数据信息传给这些中间层,再由这些中间层进行处理并实现对数据库的操作,下面总结下,实现将flash中数据写入数据库的操作。

    大概分三个步骤:

    1.flash将要处理的数据发给中间层

      在这一步实现flash与中间层交互的方法应该不止一个,但网络上流传的最广的是使用loadVariablesNum函数进行数据传递,我也做了个例子试验了一下,确实可以实现,所以就以这个方法为例吧。我查了下flash的帮助文档,上面对这个函数的描述如下:

    loadVariablesNum(url:String, level:Number, [method:String]) : Void

    从外部文件(例如文本文件,或由 ColdFusion、CGI 脚本、ASP、PHP 或 Perl 脚本生成的文本)中读取数据,并设置 Flash Player 的某个级别中的变量的值。此函数还可用于使用新值更新活动 SWF 文件中的变量。。。。。

       直到我将整个帮助文档读完我仍然有些困惑,这上面写的是从外部文件中读取数据,从函数的名称上看似乎也是要加载外部文件数据的意思。而这似乎与我们所想要完成的第一步完全相反,在这一步中我们是想将flash中的信息传递给中间层文件进行处理,而不是从其中读取数据。不过不管怎样,事实胜于一切,我经过试验发现这个函数确实能够实现将flash中的数据传出给中间层文件。我猜测这个函数应该是想实现两个过程:1.flash中的数据传出给中间层->2.将中间层处理好的数据再加载到flash中。而我们现在要实现的是将flash中的数据写入数据库的操作,所以我们只用到了第一个过程。(只是猜测,有待考证)

      具体操作(以asp为例):

          1.首先在flash场景中添加一个文本框,在其文本属性中设置其为输入文本,并将其实例名设置为message_text。

          2.再在flash场景中添加一个按钮,在按钮的release事件中添加相关动作,示例如下:

             on (release) {//按钮releash事件
                  if(_root.message_text.text!="") //若输入文本框中的内容不为空则进行下列操作
                  {  

                     //得到输入文本框message_text中已输入的文本,并将其赋给变量mymessage
                     mymessage=_root.message_text.text;

                     //将flash变量传递给中间层write.asp文件
                     loadVariablesNum("write.asp",0,"POST"); 
                  } 
              }

     到此为止,我们的第一步(flash中的数据传递给中间层)已经完成,接下来就是asp文件的处理了。

    2.中间层接收flash传递过来的数据

        这个步骤比较简单,只需要在asp程序中,使用Request.Form("mymessage")得到flash中传递过来的mymessage变量的值就可以了。这里具体的原理就不清楚了,Request.Form()方法在asp中是用来接收提交页面表单控件内容的。在这里也许是asp会把flash中的变量认为是提交过来的表单内容吧。到这里接受的工作也就完成了,接下来就是写入数据库了。

    3.中间层进行数据库的操作

        其实到了第二步就已经与flash无关了,我们得到了flash传递过来的变量后就可以对其进行运算和操作了,比如我们现在要将得到的数据插入到数据库中,就将得到的数据用asp插入数据库的方法进行操作就可以了。具体方法就是asp的知识了,下面只给出个write.asp的一段内容供参考(不是完整程序,红色部分即为实现数据插入的语句)

        dim sql
        sql="select * from message"
        call openDB()
        rs.open sql,conn,3,3
     
        rs.addnew    '添加当前记录到数据库
       
    rs("message")=Request.Form("mymessage")
        rs.Update
        call closeDB()
    到此就实现了将flash中数据写入数据库的全部操作。确实有点麻烦,希望技术的更新能够带给我们更多的便利

    本文参考http://hi.baidu.com/flashshow/blog/item/d7dea264aea765f0f636547f.html


    收藏到:Del.icio.us




    评论

  • 真有插件能实现?
    ruby on rails是个框架吧,
    研究个框架麻烦,而且不自己写几行代码多没成就感啊,哈哈
  • ruby on rails 中有现成的插件可以实现

    不过我不太喜欢flash 这种封闭的东西
    看看吧 ajax 其实不错