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

Flash / Actionscript ,

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