AIR и sqlite: если таблица существует условно

Как получить логическое значение в AS3, существует ли таблица или запись в базе данных?

Ответы

Ответ 1

В отличие от поиска вручную с помощью SQL, вы должны использовать встроенные классы/функции Schema. Вот пример того, как это будет работать.

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

Ответ 2

Нет простого утверждения для достижения логического значения, но вы можете:

  • используйте PRAGMA table_info(tbl_status) и проанализируйте список.

  • попробуйте выполнить SELECT col FROM table_name в try... catch block, в случае ошибки просто установите переменную в bool.

Кстати, возможно, вам нужно использовать IF NOT EXISTS в инструкции create для таблицы, создания индекса...

Ответ 3

может быть полезен для кого-то - для асинхронного подключения:

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

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