AIR and sqLite : if table exists conditional
How do I get a Boolean value i开发者_如何学Pythonn AS3 whether a table or an entry exists in the database?
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;
}
There is no simple statement to achieve boolean value, but you can:
use
PRAGMA table_info(tbl_status)
and analize list.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...
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
}
精彩评论