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
}