You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@empire-db.apache.org by bachew <ap...@gmail.com> on 2009/01/29 08:30:03 UTC

How about drop/alter table and column?

Hi,
I did some quick search in the API, couldn't find API to drop/alter table
and column. This is important because some applications might perform data
model upgrade.Please advise.

AW: How about drop/alter table and column?

Posted by Rainer Döbele <do...@esteam.de>.
Hi bachew,

what you need is a DBScript object and the getDLLScript() method on DBDatabaseDriver.

Here's an example how to do it:

// required objects
DBDatabaseDriver driver = db.getDriver();
DBSQLScript script = new DBSQLScript();

// create a new table
DBTable Employees = new Employees(db);
driver.getDDLScript(DBCmdType.CREATE, Employees, script);
script.run(driver, conn, false);

// create a new column (if table already exists)
DBTableColumn myColumn = Employees.addColumn("MyColumn", DataType.TEXT, 50, true);
driver.getDDLScript(DBCmdType.CREATE, myColumn, script);
script.run(driver, conn, false);

// drop the column
driver.getDDLScript(DBCmdType.DROP, myColumn, script);
script.run(driver, conn, false);
Employees.getColumns().remove(myColumn); // remove it from the table object!

// drop a table
driver.getDDLScript(DBCmdType.DROP, Employees, script);
script.run(driver, conn, false);
db.getTables().remove(Employees); // remove the table object from the db

I recommend debugging through the advanced sample (SampleAdvApp). 
The method ddlSample() does exactly what you are asking for and performs a data model change at runtime.

Regards,
Rainer


bachew wrote:
/ 
/ re: How about drop/alter table and column?
/
/ Hi,
/ I did some quick search in the API, couldn't find API to drop/alter table and column. This is important because / some applications might perform data model upgrade.
/ Please advise.