對於我的應用程序創建一個類來定義數據庫:
public final class MyApplicationDb
{
public static String DATABASE_NAME = "my_application_db";
public static int DATABASE_VERSION = 1;
public static final class Table1
{
public static String TABLE_NAME = "table1";
public static String ID = "_id";
public static String DAY = "day";
public static String NAME = "name";
public static String SOURCE = "source";
public static String[] COLUMNS = { ID, DAY, NAME, SOURCE };
}
public static final class Table2
{
public static String TABLE_NAME = "table2";
public static String ID = "_id";
public static String CONTACT_ID = "contactId";
public static String CONTACT_NAME = "contactName";
public static String LAST_WISH_DATE = "lastWishDate";
public static String[] COLUMNS = { ID, CONTACT_ID, CONTACT_NAME, LAST_WISH_DATE };
}
}
以及用於創建和更新數據庫res/raw/db_create.sql
和res/raw/db_update.sql
/* db_create.sql */
create table table1(
_id integer primary key autoincrement,
day char(5) not null,
name varchar(64) not null,
source varchar(64) not null);
create table table2(
_id integer primary key autoincrement,
contactId integer not null,
contactName text not null,
lastWishDate char(10) null);
/* db_update.sql */
DROP TABLE IF EXISTS table1;
DROP TABLE IF EXISTS table2
2個SQL腳本和另一類用於創建/更新/訪問類似於的數據庫,除了它使用sql腳本創建/更新數據庫而不是常量。 (看看here看怎麼做)
onUpgrade事件爲所有數據庫觸發一次,或爲每個表類觸發? – Pentium10 2010-02-26 09:23:58
當Android檢測到DATABASE_VERSION已增加時,會觸發'onUpgrade()'。你可以在裏面做你想做的事。 大多數情況下,您將刪除所有表(請參閱db_update.sql腳本)並調用'onCreate()'來重新創建數據庫。 – tbruyelle 2010-02-26 09:49:22
不建議爲每個表創建1個MyApplicationDb和幾個新的Table1類?在c#中,我爲每個表創建了一個類,並且我沒有包裝到適配器中。 – Pentium10 2010-02-26 11:06:48