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

Flash / Actionscript ,

  1.  
    No comments yet.
     
Post a Comment
  1. No trackbacks yet.
You must be logged in to post a comment.