Daniel
Daniel

Reputation: 35684

AIR and sqLite : if table exists conditional

How do I get a Boolean value in AS3 whether a table or an entry exists in the database?

Upvotes: 3

Views: 7415

Answers (3)

user2836288
user2836288

Reputation: 98

can be useful for someone - for async connection:

connection.loadSchema();
connection.addEventListener(SQLEvent.SCHEMA, check_result);

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

Upvotes: 1

Mindbane
Mindbane

Reputation: 596

As opposed to finding it manually with SQL you should use the built in Schema information classes/functions. Here is an example of how it would work.

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;
}

Upvotes: 10

Lex
Lex

Reputation: 1378

There is no simple statement to achieve boolean value, but you can:

  1. use PRAGMA table_info(tbl_status) and analize list.

  2. try to execute SELECT col FROM table_name in try...catch block, in case of error simply set variable to bool.

BTW, maybe you need to use IF NOT EXISTS in create statement for table, index creation...

Upvotes: 2

Related Questions