2016-12-24 66 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 

然而,这不是结构,例如一个完整全面的副本主键不会被创建。