Delete SQLite Column Using Actionscript 3
May 26th, 2009
SQLite has very limited support for altering existing tables. It only allows you to add columns to or rename an existing table. Below is an example of how you can delete a column of an existing SQLite table using Actionscript 3.
private function deleteColumn(aTableName:String,columnName:String):void
{
_sqlConnection.loadSchema();
var result:SQLSchemaResult = _sqlConnection.getSchemaResult();
var tables:Array = result.tables;
////////////FIND DESIRED TABLE
var categoryTable:SQLTableSchema;
for(var j:int = 0; j < tables.length; j++)
{
if(tables[j].name == aTableName)
{
categoryTable = tables[j];
}
}
////////////GET ARRAY DESIRED TABLE'S COLUMNS
var columns:Array = categoryTable.columns;
////////////CREATE TEMP TABLE
var isTempCreated:Boolean = false;
var columNames:Array = [];
for(var k:int = 0; k < columns.length; k++)
{
if(columns[k].name != columnName)
{
columNames.push(columns[k].name);
if(!isTempCreated)
{
isTempCreated = true;
query("CREATE TABLE temp(" + columns[k].name + " TEXT)");
}else{
query("ALTER TABLE temp ADD '" + columns[k].name + "' TEXT");
}
}
}
//////////////INSERT VALUES FROM OLD TABLE AND DROP IT
query("INSERT INTO temp SELECT " + String(columNames) + " FROM users");
query("DROP TABLE " + aTableName);
query("ALTER TABLE temp RENAME TO " + aTableName);
}
private function query(sql:String):SQLResult
{
_sqlStatement.sqlConnection = _sqlConnection;
_sqlStatement.text = sql;
_sqlStatement.execute();
var sqlresult:SQLResult = _sqlStatement.getResult();
if(sqlresult.data != null)
{
return sqlresult;
}else{
return null;
}
}