2011-03-06 68 views
0

希望你能从代码中看到我在这里想要做的一些事情,基本上我需要检查数据库中是否存在一条记录,所以我调用了一个函数来实现,但我使用的是sqlrunner类其中查询的结果被称为事件响应,我不知道如何将结果函数中的值从父函数返回。 我觉得我必须倒着做的事情或东西..如何从此sqlrunner函数返回布尔值?

 public function dbmatch(datetime:String, typecode:String):Boolean { 
      var q:String = "SELECT DateTime FROM Event WHERE DateTime='"+datetime+"' AND EventTypeCode='"+typecode+"'" 
      SQLService.getInstance().execute(q,null,matchresult); 
      function matchresult(result:SQLResult):Boolean{ 
       var match:String = result.data[0]; 
       if (match == null){return false} else {return true} 
      } 
      return matchresult(); 
     } 

别处:

var recordexists:Boolean = dbmatch(datetime, "Gb"); 

if (!recordexists){...} 
+0

到底是什么问题?它总是回归真实? – 2011-03-06 21:31:16

+0

@EyeSeeEm我在那里有什么实际上并没有拉回形式matchresult ..它需要一个参数,但我不知道如何把它。主要的问题是matchresult最初是由一个事件监听器调用的,我不知道它返回的位置。 – Damon 2011-03-06 21:37:34

+0

啊,我明白了。那么我认为你需要改变程序流程。结果无法立即返回,所以您需要等待(即听)完成,然后继续执行。如果你需要它,我可以尝试写一个例子,虽然我不确定它会适用于你的案例,但它可能有助于澄清事情。 – 2011-03-06 22:20:31

回答

1

基本上问题是SQLService类不能立刻返回结果为查询。这就是为什么它使用回调监听器函数(在您的示例中为matchresult)在稍后通知您的程序它已完成搜索。

处理这个问题的一个基本方法是调用查询,然后等待Query对您的监听函数“回调”,然后继续执行。

public function dbmatch(datetime:String, typecode:String, callbackListener:Function):void { 
    var q:String = "SELECT DateTime FROM Event WHERE DateTime='"+datetime+"' AND EventTypeCode='"+typecode+"'" 
    SQLService.getInstance().execute(q, null, callbackListener); 
} 

在别处:

// Start the query, but can't react to it immediatly   
    dbmatch(datetime, "Gb", onSQLQueryResult); 

    // Your callback function 
    public function onSQLQueryResult(result:SQLResult):void { 
     var match:String = result.data[0]; 
     if (match == null) { 
      // Do stuff you were going to do at (!recordexists) 
     } 
    } 
+0

回调函数对我来说是新的..这看起来像它应该工作..但是,回调函数没有被调用.. – Damon 2011-03-06 23:07:41

+0

它也说'3590:void在布尔值预期的地方使用。表达式将被强制转换为布尔值。' 'dbmatch(datetime,“GB”..行 – Damon 2011-03-06 23:09:25

+0

@damon是否将dbmatch函数的返回类型更改为void?或者您仍然试图将函数的返回值分配给您的recordexists变量吗?这将不再起作用,因为dbmatch不会返回任何东西,它只会初始化SQL查询 – 2011-03-06 23:15:44