Rename 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 rename a column of an existing SQLite table using Actionscript 3.
private function renameColumn(aTableName:String,oldColumnName:String,newColumnName: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;
for(var k:int = 0; k < columns.length; k++)
{
if(columns[k].name != oldColumnName)
{
if(!isTempCreated)
{
isTempCreated = true;
query("CREATE TABLE temp(" + columns[k].name +" TEXT)");
}else{
query("ALTER TABLE temp ADD '" + columns[k].name +"' TEXT");
}
}else{
if(!isTempCreated)
{
isTempCreated = true;
query("CREATE TABLE temp(" + newColumnName +" TEXT)");
}else{
query("ALTER TABLE temp ADD '" + newColumnName +"' TEXT");
}
}
}
//////////////INSERT VALUES FROM OLD TABLE AND DROP IT
query("INSERT INTO temp SELECT * 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;
}
}