Android 如何仅复制表结构?
我想创建一个数据库。它最多有9个表,将来可能会超过。但表的结构(列数和列名)对于所有表都是相同的。我知道有一个选项可以复制表的结构,重命名并使用它,但我不知道如何准确地执行。请给我相关的答案,这样可以减少我的代码。您可以通过Android 如何仅复制表结构?,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我想创建一个数据库。它最多有9个表,将来可能会超过。但表的结构(列数和列名)对于所有表都是相同的。我知道有一个选项可以复制表的结构,重命名并使用它,但我不知道如何准确地执行。请给我相关的答案,这样可以减少我的代码。您可以通过PRAGMA table\u info()从基表中提取列。 e、 g 结果CUSOR具有带列的行:- cid(rowid) 名称(列名称) 类型(列类型,例如整数) notnull(如果可以为null,则为0) dflt_值(如果有默认值) pk(如果不是主键的一部分,则为0
PRAGMA table\u info()从基表中提取列。
e、 g
结果CUSOR具有带列的行:-
cid(rowid)
名称(列名称)
类型(列类型,例如整数)
notnull(如果可以为null,则为0)
dflt_值(如果有默认值)
pk(如果不是主键的一部分,则为0,否则为1,2…如果是主键的一部分)
然后,您可以从中构建SQL
另一种选择是通过以下方式提取用于创建表的SQL:-
SELECT sql FROM sqlite_master WHERE type='table' AND name='<yourtable>'
但是,这不是结构的完整全面副本,例如,主键未创建。您的目标不明确!以后是否要在数据库中创建具有相同结构的新表?如果是,您面临的问题是什么?复制表,然后全部删除(而不是删除)(不使用WHERE子句)。是的,我想创建具有相同结构的新表。问题是我不知道如何在android@ahmad中获得旧表的结构
SELECT sql FROM sqlite_master WHERE type='table' AND name='<yourtable>'
CREATE TABLE newtable AS SELECT * FROM basetable WHERE 0