如何从 actionscript 进行 SQL 查询?并渲染所有结果
3 回答
您必须调用服务器端脚本(例如 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 ...
据我所知,在 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
您 - 真的 - 不想从 Flex 执行 SQL 查询连接,尤其是在应用程序分发给用户的情况下。Flash/Flex 应用程序可以很容易地反编译成可读的源代码,如果你的 SQL 连接字符串在源代码中,你就会遇到各种安全问题。让 Flex 对 PHP、Python、Perl 或 Node 等服务器端语言使用 Restful Web API 来为您进行 SQL 数据处理是一个更好的主意。
即使您的应用程序是内部的,它仍然是一个更好的“纸上”概念,以防止 Flex 直接操作数据库。