Actionscript 3 我一直得到一个空的sqlStatement.getResult,这段代码在一个动作脚本移动项目中。
我试图保持它的简单,只是添加和显示现在,没有必要删除条目或任何事情,因为现在。非常感谢您的帮助Actionscript 3 我一直得到一个空的sqlStatement.getResult,这段代码在一个动作脚本移动项目中。,actionscript-3,Actionscript 3,我试图保持它的简单,只是添加和显示现在,没有必要删除条目或任何事情,因为现在。非常感谢您的帮助 package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.events.Event; import flash.events.SQLErrorEve
package
{
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.Event;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
import flash.net.URLLoader;
import flash.net.URLRequest;
import screens.LevelSelection;
public class Database
{
public var sqlConnection:SQLConnection;
private var db:File;
private var dbStatus:String= "";
private var dataResult:Object;
private var playersList:Array;
public var selectAllSQL:SQLStatement;
public function openDB():void
{
db = File.desktopDirectory.resolvePath("Players.db");
sqlConnection = new SQLConnection();
sqlConnection.addEventListener(SQLErrorEvent.ERROR, onSQLError);
if(db.exists)
{
sqlConnection.addEventListener(SQLEvent.OPEN, onOpenDB);
trace("DB Found");
}
else
{
sqlConnection.addEventListener(SQLEvent.OPEN, onCreateDb);
}
sqlConnection.openAsync(db);
}
private function onSQLError(event:SQLErrorEvent):void
{
var error:String = "Error id: "
+ event.error.errorID + "\nDetails: " + event.error.details;
dbStatus += event + "Error";
}
private function onOpenDB(event:SQLEvent):void
{
dbStatus += "The database was opened...";
if(SQLConnection(event.target).connected)
{
trace(dbStatus);
}
}
public function onCreateDb(event:SQLEvent):void
{
dbStatus += "The database was created...";
createPlayerTable();
trace(dbStatus);
}
Im not sure if my syntax is right for these statements. I tried to trace a lot of things out so that i can see the results in debugging
public function createPlayerTable():void
{
var sqlText:String =
"CREATE TABLE IF NOT EXISTS Players(NAME TEXT, SCORE INTEGER)";
var createTableSQL:SQLStatement = new SQLStatement();
createTableSQL.sqlConnection = sqlConnection;
trace("Create Table Connection: "
+ createTableSQL.sqlConnection.connected);
createTableSQL.addEventListener(SQLEvent.RESULT, onPlayersTable);
createTableSQL.addEventListener(SQLErrorEvent.ERROR, onSQLError);
createTableSQL.text = sqlText;
createTableSQL.execute();
trace(createTableSQL.getResult());
}
public function onPlayersTable(event:SQLEvent):void
{
dbStatus += "The Players table was created";
trace(dbStatus);
}
public function selectPlayers():void
{
var sqlText:String = "SELECT * FROM Players";
selectAllSQL = new SQLStatement();
selectAllSQL.sqlConnection = sqlConnection;
selectAllSQL.addEventListener(SQLErrorEvent.ERROR, onSQLError);
selectAllSQL.text = sqlText;
selectAllSQL.execute();
handleSelection(selectAllSQL);
}
public function handleSelection(event:SQLStatement):void
{
onSelectPlayers(selectAllSQL);
}
public function onSelectPlayers(event:SQLStatement):void
{
trace("select called");
var result:SQLResult = event.getResult();
if(result.data)
{
for(var i:int = 0; i < result.data.length; i++)
{
screens.LevelSelection.output.text +=
"Name: " + result.data[i]["NAME"] + ", " +
"Score: " + result.data[i]["SCORE"];
}
}
}
因为它是异步调用,所以如果放置跟踪(createTableSQL.getResult()),就不会立即得到结果;
在OnPlayerTable方法中,我认为您将获得预期的结果。。。你的错误从哪里冒出来的?在哪一行?当我在if语句中运行onSelectPlayers方法时,它会弹出。result.data为null。我认为insert调用通常有问题。那么您的数据库是什么样子的?数据到达那里了吗?我不知道如何检查数据是否到达那里。对不起,我还是个笨蛋。。。
public function addPlayer():void
{
var sqlText:String =
"INSERT INTO Players(NAME, SCORE) Values(@name, @score)";
var addPlayerSQL:SQLStatement = new SQLStatement();
addPlayerSQL.sqlConnection = sqlConnection;
trace("ADD PLAYER CONNECTION: " + addPlayerSQL.sqlConnection.connected);
addPlayerSQL.addEventListener(SQLErrorEvent.ERROR, onSQLError);
addPlayerSQL.text = sqlText;
addPlayerSQL.parameters["@name"] = screens.LevelSelection.input.text;
addPlayerSQL.parameters["@score"] = 0;
addPlayerSQL.execute();
trace(addPlayerSQL.getResult());
trace(screens.LevelSelection.input.text);
trace("Player added");
selectPlayers();
}
}
}