如何从actionscript创建SQL查询?

时间:2012-04-10 20:25:17

标签: actionscript-3 flash

如何从actionscript创建SQL查询?并呈现所有结果

3 个答案:

答案 0 :(得分:7)

您必须调用服务器端脚本(例如php),然后检索该脚本的输出

private var _loader:URLLoader;
private var _request:URLRequest;

private function loadData():void {
    _loader = new URLLoader();
    _request = new URLRequest("path/to/your/phpscript");
    _request.method = URLRequestMethod.POST;
    _loader.addEventListener(Event.COMPLETE, onLoadData);
    _loader.addEventListener(IOErrorEvent.IO_ERROR, onDataFailedToLoad);
    _loader.addEventListener(IOErrorEvent.NETWORK_ERROR, onDataFailedToLoad);
    _loader.addEventListener(IOErrorEvent.VERIFY_ERROR, onDataFailedToLoad);
    _loader.addEventListener(IOErrorEvent.DISK_ERROR, onDataFailedToLoad);
    _loader.load(_request);
}
private function onLoadData(e:Event):void {
    trace("onLoadData",e.target.data);
}
private function onDataFailedToLoad(e:IOErrorEvent):void {
    trace("onDataFailedToLoad:",e.text);
}

示例php脚本:

<?php

    // defining main variables
    $dbHost = "localhost";
    $dbUser = "root";
    $dbPass = "";
    $dbName = "test";
    $dbTable = "data";

    // connecting and selecting database
    @mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
    @mysql_select_db($dbName) or die(mysql_error());

    // getting data
    $data = "";
    $res = mysql_query("SELECT * FROM ".$dbTable." ORDER BY id") or die(mysql_error());
    while($row = mysql_fetch_object($res)) {
        $data .= "nname=".$row->name.", ";
        $data .= "city=".$row->city;
    }
    echo $data;

?>

为了更好的工作流程,我建议调查AMF ......

Here's a tutorial on AMF

答案 1 :(得分:3)

我不知道在Flex中工作的JDBC或ODBC是否真正等效。由于Flex / Flash通常是客户端而DB通常是服务器端(共享),因此很可能这并不是真正被尝试提供的东西。一般来说,您使用Java,PHP,C#,ASP .NET,Python,C ++或其他一些服务器端程序来建立与DB的连接并运行查询。与我的问题最接近的问题是:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118676a5497-7fb4.html但是只适用于AIR而不适用于远程SQL连接。我不完全确定编写类似于接口/实现的JDBC来连接到任何给定的DB需要做多少工作我认为部分取决于DBMS记录的程度......我想它是哪种方式做大量工作。

修改

好的,所以实际上在某种程度上吃了我的话,显然这有点可行:http://groups.google.com/group/flex_india/browse_thread/thread/d89bb5120fad7369?pli=1

答案 2 :(得分:1)

您 - 实际上 - 不希望从Flex执行SQL查询连接,尤其是在将应用程序分发给用户的情况下。 Flash / Flex应用程序可以很容易地反编译成可读的源代码,如果您的SQL连接字符串在源代码中,那么您将遇到各种安全问题。让Flex使用宁静的Web API到服务器端语言(如PHP,Python,Perl或Node)来为您执行SQL数据处理,这是一个明智的好主意。

即使你的应用程序是内部的,它仍然是一个更好的“纸上”概念,以防止Flex直接操纵数据库。