Actionscript 3 AIR和sqLite:如果表存在条件

Actionscript 3 AIR和sqLite:如果表存在条件,actionscript-3,sqlite,air,Actionscript 3,Sqlite,Air,无论数据库中是否存在表或条目,如何在AS3中获取布尔值?实现布尔值没有简单的语句,但您可以: 使用PRAGMA table\u info(tbl\u status)并分析列表 在try…catch块中尝试执行从表_name中选择col,如果出现错误,只需将变量设置为bool即可 顺便说一句,如果表的create语句中不存在,可能需要使用,,索引创建…与使用SQL手动查找相反,您应该使用内置的模式信息类/函数。下面是一个如何工作的示例 public function doesTableExist(

无论数据库中是否存在表或条目,如何在AS3中获取布尔值?

实现布尔值没有简单的语句,但您可以:

  • 使用PRAGMA table\u info(tbl\u status)并分析列表

  • 在try…catch块中尝试执行
    从表_name中选择col
    ,如果出现错误,只需将变量设置为bool即可


  • 顺便说一句,如果表的create语句中不存在,可能需要使用
    ,索引创建…

    与使用SQL手动查找相反,您应该使用内置的模式信息类/函数。下面是一个如何工作的示例

    public function doesTableExist(connection:SQLConnection, tableName:String):Boolean
    {
        connection.loadSchema();
        var schema:SQLSchemaResult = connection.getSchemaResult();
    
        for each (var table:SQLTableSchema in schema.tables)
        {
            if (table.name.toLowerCase() == tableName.toLowerCase())
            {
                return true;
            }
        }
        return false;
    }
    

    可能对某人有用-对于异步连接:

    connection.loadSchema();
    connection.addEventListener(SQLEvent.SCHEMA, check_result);
    
    private function check_result(event:SQLEvent):void{
    var schema:SQLSchemaResult = connection.getSchemaResult();
    //as above
    }
    

    谢谢,我试试看。我已经有了
    创建表(如果不存在)
    删除表(如果存在)
    ,但是我想知道如何在as3didn中获得它,我还没有在切换到数据对象时进行测试,但我会在有机会时尝试一下,谢谢。这是最好的方法。AS3 SQLite不支持PRAGMA。这确实效果最好。我建议将整个函数包装在try-catch语句中,因为如果数据库中根本没有表,就会抛出一个错误,说明没有要加载的模式,当然会在运行时引起问题。2.)如果您使用的是异步数据库连接,则必须确保在开始检查架构之前该连接已完全加载,否则您将收到一个错误,抱怨连接不好。