1

如何从 actionscript 进行 SQL 查询?并渲染所有结果

4

3 回答 3

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 ...

这是关于 AMF 的教程

于 2012-04-10T20:42:34.727 回答
3

据我所知,在 Flex 中工作并没有真正等同于 JDBC 或 ODBC 的东西。由于 Flex/Flash 通常是客户端,而数据库通常是服务器端(共享),因此很可能并没有真正将其作为尝试交付的东西进行探索。一般来说,您会使用 Java、PHP、C#、ASP .NET、Python、C++ 或其他一些服务器端程序来建立与数据库的连接并运行查询。我所看到的与您的问题最接近的是: http: //help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118676a5497-7fb4.html但仅适用于 AIR,不适用于远程 SQL 连接。我不完全确定编写一个类似 JDBC 的接口/实现来连接到任何给定的数据库需要做多少工作,我想这部分取决于 DBMS 的文档记录……无论哪种方式,我的猜测都是做大量的工作。

编辑

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

于 2012-04-10T20:42:00.753 回答
1

您 - 真的 - 不想从 Flex 执行 SQL 查询连接,尤其是在应用程序分发给用户的情况下。Flash/Flex 应用程序可以很容易地反编译成可读的源代码,如果你的 SQL 连接字符串在源代码中,你就会遇到各种安全问题。让 Flex 对 PHP、Python、Perl 或 Node 等服务器端语言使用 Restful Web API 来为您进行 SQL 数据处理是一个更好的主意。

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

于 2012-04-11T00:58:50.513 回答