2011-03-06 72 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