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