apache-flex - Flex AIR Sqlite 作为嵌入式数据库

标签 apache-flex actionscript-3 sqlite air

我正在使用 Sqlite 作为嵌入式数据库在 Flex + AIR 中开发具有拼写检查功能的编辑器。
在数据库中,我有一个带有单词的表。该表包含一些单词。我已经编写了代码来搜索表中的单词。我已经为所有这些使用了同步方法。这会在搜索时暂停我的应用程序。
我想使用异步方法来停止应用程序暂停。

搜索词的代码如下:

    public function searchInDictionary(word:String):Boolean
    {
   if(word == "")
    return true;
      connection= new SQLConnection();
      var query:SQLStatement = new SQLStatement();
      query.sqlConnection = connection;
      query.text = 'SELECT id FROM tbl_'+ CommonLanguageCode +' WHERE word LIKE "'+word+'"';      

      try
      {        
        connection.open( dbfile,SQLMode.READ );
      }
      catch(ex:Error)
      {}

      if(!connection.connected)
        connection.open( dbfile );
      query.execute();
      var result:SQLResult = query.getResult(); 
      if( result.data == null ) 
      {
        return false;
      }
      else
      {
        var numRows:uint = result.data.length; 
        var id:String;
        if(numRows>0)
          return true;
        return false;
      }
      return false;        
  }

如果此函数返回 false(未找到单词),那么我必须调用该函数来为该单词添加红色下划线。

如果我出错了,请建议我。当我使用同步方法时,搜索一个单词需要几毫秒。 &如果我正在写一段,那么它会使我的应用程序变得迟缓。

有没有其他方法可以更快地存储单词和搜索。如果是,请让我知道。

提前致谢。

最佳答案

您需要稍微重新组织您的代码,以便调用在结果返回时执行红色下划线的函数,而不是从方法返回 bool 值。

public function searchInDictionary(word:String):void
{
  // Don't bother searching if no word was passed in
  if(word == "") return;

  // Open db connection asynchronously
  var connection:SQLConnection = new SQLConnection();
  connection.openAsync(dbfile, SQLMode.READ);

  // Create statement
  var statement:SQLStatement = new SQLStatement();
  statement.sqlConnection = connection;
  statement.text = 'SELECT id '
             + 'FROM tbl_'+ CommonLanguageCode +' '
             + 'WHERE word LIKE "' + word + '"';

  // Add event listener
  statement.addEventListener(SQLEvent.RESULT, function(event:SQLEvent):void{
    var result:SQLResult = event.target.getResult();
    if(result.data.length == 0) {
      // ... call method to red underline word in text ...
    }
  });

  // Execute statement
  statement.execute();

}

关于apache-flex - Flex AIR Sqlite 作为嵌入式数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796351/

相关文章:

android - Adobe Flex Mobile 错误 1144 : Interface method initialize in namespace mx. core:IUIComponent is implemented with an incompatible signature

actionscript-3 - 在内部组件上调用函数

actionscript-3 - 使用Flash/AS3录制内部音频

actionscript-3 - actionscript 3 - Sprite 始终在顶部

actionscript-3 - 如何在OSMF中加载ByteArray FLV?

java - 当我要求它在 toast 中显示保存的数据时,我的应用程序崩溃了 - 我

apache-flex - Flex 最佳实践 - 多个 Flex 项目或 1 个项目、多个应用程序 MXML 文件

android - 我想在我的 Android 应用程序中添加一个添加到收藏夹选项

android - 无法将新记录添加到sqlite数据库android

apache-flex - Flex 3相当于 '<fx:Declarations>'吗?