2010-02-26 43 views
5

我已經檢查了NotesDbAdapter示例,並且我注意到這隻適用於單個表。 (筆記)NotesDbAdapter示例適用於一個表,那麼多個表怎麼樣?

1)我想知道這將如何做多個表?例如,我現在有3張桌子。我將如何處理所有升級,從這三個表中取出,刪除?

2)我看到定義的屬性爲表列

public static final String KEY_TITLE = "title"; 
public static final String KEY_BODY = "body"; 
public static final String KEY_ROWID = "_id"; 

你如何定義一個多表的情況列?

回答

6

對於我的應用程序創建一個類來定義數據庫:

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.sqlres/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看怎麼做)

+0

onUpgrade事件爲所有數據庫觸發一次,或爲每個表類觸發? – Pentium10 2010-02-26 09:23:58

+0

當Android檢測到DATABASE_VERSION已增加時,會觸發'onUpgrade()'。你可以在裏面做你想做的事。 大多數情況下,您將刪除所有表(請參閱db_update.sql腳本)並調用'onCreate()'來重新創建數據庫。 – tbruyelle 2010-02-26 09:49:22

+0

不建議爲每個表創建1個MyApplicationDb和幾個新的Table1類?在c#中,我爲每個表創建了一個類,並且我沒有包裝到適配器中。 – Pentium10 2010-02-26 11:06:48

相關問題