2010-02-19 78 views
5

我想删除所有没有行的表。如何删除SQLite中的所有空表?

如何删除SQLite中的所有空表?

编辑
我需要这样做手机(无外壳存在)。在Windows Mobile手机上。

+1

最有可能在shelling脚本或perl中完成。 – Yada 2010-02-19 22:45:10

+0

我需要在手机上进行此操作(没有外壳)。在Windows Mobile手机上。 – Pentium10 2010-02-19 22:48:09

+0

我们需要知道什么语言可用(因为我不知道,无论如何)。 – 2010-02-19 22:52:00

回答

7

可以删除表,不管它们在执行命令时是否有数据。不要操作任何其他数据库。因此,这意味着:

1)获取表的列表 -

SELECT name 
    FROM sqlite_master 
WHERE type = 'table' 

2)遍历该列表,使用COUNT(*),以确定是否在表中存在的任何行:

SELECT COUNT(*) 
    FROM ~table 

3)如果返回的数字小于1,执行DROP语句:

DROP TABLE ~table 

SQLite没有福nction或存储过程支持 - 您必须从您的应用程序执行此操作。

+0

表名是什么意思? – Pentium10 2010-02-19 22:49:48

+0

@ Pentium10:psuedo变量。如果我使用'$',人们可能会认为它是一个PHP变量。 '@'是MySQL&SQL Server语法... – 2010-02-19 22:51:08

+0

@ Pentium10:这是一个陷阱! – Hogan 2010-02-19 23:09:23