ahphsautoit 发表于 2011-8-13 10:13:57

请问如何查看或枚举SQLite的所有表?

本帖最后由 ahphsautoit 于 2011-8-13 10:15 编辑

最近在研究SQLite,论坛搜索了很多次了,都没有找到枚举数据库内所有表的方法。我现在用的笨方法都是在数据库中专门用了一张表来记录数据库内的其它表名。不知哪位大侠能指点一二否?另外,如命令:_SQLite_Exec(-1, "Insert into " & "TableList" & " (IDs) values ('" & $Temp + 1 & "');")中的“ "Insert into " & "TableList" & " (IDs) values ('" & $Temp + 1 & "');"”之类的命令的解释太少了,根本找不到,只能照样搬,而搜索非autoit的的SQLite帮助更云里雾里看不懂,希望高手总结一下,提点一下初学者。

powerofos 发表于 2011-8-13 10:18:43

我个人对SQL也知之不详,但我认为表是“人为”创建的,SQL没提供命令也不为过,因为可以通过创建表的索引来储存表数据,也就是换个形式的枚举所有表数据了。

ahphsautoit 发表于 2011-8-13 10:40:57

本帖最后由 ahphsautoit 于 2011-8-13 10:44 编辑

回复 2# powerofos

你所提出的方法和我目前使用的“专用表存储所有表名”的方法异曲同工。但是这种方法存在一个弊端:我删除一张不需要的表,删除表的同时,删除这张表的索引,但是,虽然在索引表里我再也看不到这张表了,但这张表是否真的从数据库中删除了,无法得知。我刚刚做过实验,创建了20个表,再逐一删除,我的“索引表”内是删除了,但是整个数据库的大小没有变小,用记事本打开数据库文件,看到的乱码和没有删除表之前的乱码差不多,没有什么变化。我怀疑我照搬的删除表命令:_SQLite_Exec (-1, "DROP table "&GUICtrlRead($combo1)&";")并没有成功删除我想要删除的表。

powerofos 发表于 2011-8-13 10:54:15

回复 3# ahphsautoit


再排查一下错误,在你删除索引表中数据后,_SQLite_Close()关闭数据库,重新载入,再执行删除表操作。看看有没有删除表

ahphsautoit 发表于 2011-8-13 11:01:29

回复 4# powerofos


    原理上说,删除表和删除索引表数据同时执行是没有冲突或矛盾的,不过,你讲的方法我还是要试一下的。

ahphsautoit 发表于 2011-8-13 11:44:15

本帖最后由 ahphsautoit 于 2011-8-13 11:47 编辑


我给自己使用的数据库设定了一个专用标准:新生存的数据库都自带一张专用表“TableList”用来存储其它数据表的相关数据。每张表的每一个数据项都自带“IDs”和其它9个数据存储单元,以满足存储数据的多元化需求。上图是我自己编写的专用数据库管理程序的界面,尚在不断完善功能中......

auto 发表于 2011-8-14 08:56:38

SELECT t.tbl_name FROM "sqlite_master" t
列出所有表。
页: [1]
查看完整版本: 请问如何查看或枚举SQLite的所有表?