2016-12-24 65 views
-4

我想創建一個數據庫。它將來可能會超過9桌。但是表的結構(列數和列名稱)對於所有表都是相同的。我知道有一個選項可以複製表格的結構並重新命名並使用它,但我不知道如何完全做到這一點。請給我相關的答案,以減少我的代碼。如何只複製表結構?

+0

你的目標不明確!您希望以後在數據庫中使用相同的結構創建新表?如果是的話,你面臨的問題是什麼? –

+0

複製表格,然後刪除(不是DROP)它全部(不使用WHERE子句)。 –

+0

是的,我想創建具有相同結構的新表格。問題是我不知道如何在android @ahmad中獲得舊錶格的結構 – mrunalinimunna

回答

0

你可以通過PRAGMA table_info (<yourtable>)

例如提取從基表中的列

String sqlstr = " PRAGMA table_info (" + table_name + ")"; 
     Cursor csr = db.rawQuery(sqlstr, null); 

所得cusors具有行與列: -

CID(ROWID)

(列名稱)

類型(列類型例如INTEGER)

NOTNULL(0,如果可以爲null)

dflt_value(缺省值,如果一個)

(0,如果不是主鍵否則1,2的一部分...如果部分主鍵)

然後,您可以建立從這個SQL。


另一種選擇是提取SQL用於通過創建該表: -

SELECT sql FROM sqlite_master WHERE type='table' AND name='<yourtable>' 

然後,您可以改變所產生的SQL,改變了基表名稱爲新表名。


第三種選擇是使用的東西複製表像

CREATE TABLE newtable AS SELECT * FROM basetable WHERE 0 

然而,這不是結構,例如一個完整全面的副本主鍵不會被創建。