Flash可以与SQL集成吗?

时间:2011-01-04 02:33:51

标签: sql flash

Flash可以与SQL一起使用吗?我有一个Flash表单,我需要将它连接到SQL。如果网上有关于此主题的任何示例。我找不到了。

3 个答案:

答案 0 :(得分:4)

您不能将ActionScript直接与SQL数据库一起使用。而是将ActionScript的http请求发送到服务器,指定正确的参数。典型的开源设置是与MySQL数据库通信的PHP脚本,但您可以将Java与Oracle,Ruby与CouchDB,.NET与SQL或任何其他可能的配置一起使用。重要的是,您必须能够调用服务器脚本并传递变量...通常是Restful setup。

正确配置PHP脚本后,可以使用http POST或http GET从ActionScript发送值。

PHP:

<?php
    $updateValue = $_POST["updateValue"];
    $dbResult = updateDB( $updateValue ); //This should return the db response
    echo( $dbResult );
?>

要从ActionScript调用此脚本,您需要创建变量对象。

var variables:URLVariables = new URLVariables();
variables.updateValue = "someResult";

变量名.updateValue必须与php变量完全匹配。

现在创建一个URLRequest对象,指定脚本的位置。对于此示例,该方法必须设置为POST。您将上面的变量添加到请求的数据设置器中。

var request:URLRequest = new URLRequest( "yourScript.php" );
request.method = URLRequestMethod.POST;
request.data = variables;

现在创建一个URLLoader并添加一个事件监听器。不要将上面创建的请求传递给构造函数,而是传递给load方法。

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onComplete );
loader.load( request );

处理程序看起来像这样。

private function onComplete( e:Event ) : void
{
    trace( URLLoader( e.target ).data.toString() );
}

此示例显示如何更新和接收来自server / db组合的响应。但是,您也可以通过脚本查询数据库并解析结果。因此,在上面的PHP示例中,您可以输出JSON,XML甚至是管道字符串,这可以由ActionScript使用。

XML是一种流行的选择,因为ActionScript的e4x支持将XML视为本机对象。

要将上述响应视为XML响应,请在onComplete处理程序中使用以下内容。

private function onComplete( e:Event ) : void
{
    var result:XML = XML( URLLoader( e.target ).data );
}

如果您的xml格式不正确,这将抛出错误,因此请确保服务器脚本始终打印出有效的XML,即使存在数据库错误。

答案 1 :(得分:0)

这个问题是给某人一个直接访问SQL服务器的flash文件是非常不安全的。即使有可能,我已经看到了针对MySQL的SOCKET类(尽管从未使用它),允许用户远程连接到您的数据库是不安全的,因为用户可以嗅探登录信息。

在我看来,最好的方法是创建一个客户端/服务器脚本。您可以使用SendAndLoad通过POST字段发送需要传递给SQL的数据,从而轻松地使用PHP或ASP.net执行此操作。然后,您可以使用以下命令在PHP中发回值:

echo'success ='。+ urlencode(data);

有了这个,flash可以通过成功字段访问数据。

我不亲自编写flash代码,但我与一家为数十家贸易展公司开发KIOSK应用程序的公司合作,我的工作是存储数据,并将其返回给他们。这是我们使用的方法。您可以使用SOAP之类的实际Web服务使其更加干净,但只有您使用它时,此方法才能完成工作。

答案 2 :(得分:0)

您应该查看Zend Amf甚至是Zend Framework,以便与Flash进行服务器端通信。据我所知,Zend Amf是与PHP通信的最快方式(因此也是您的数据库),您也可以通过&amp;返回复杂对象从客户端到服务器,反之亦然。

例如,请考虑这一点。在数据库中有大量数据,在ZF中实现函数,而这些数据被格式化并设置为一组值对象。从Flash,您查询ZF,Zf查询数据库,检索&amp;格式化数据,将值对象作为JSON字符串返回(例如)。在Flash中,您可以检索JSON字符串,对其进行解码并将您的值对象分配给您拥有的任何相关类。

有很多关于与Zend Framework进行Flash通信的教程。 这是一个例子:
http://gotoandlearn.com/play.php?id=90