sqlite_get_table为什么会自动创建表格

sqlite的机制或者是自动备份功能。

虑到id是自增长的,数据库中应该有系统表来保存相关信息,用sqliteman打开数据文件发现确实存在这样一张系统表sqlite_sequence。表中保存了表名和自增长的字段(一般就是主键id)的当前值,测试了下,如果包含自增长字段的表没有插入过数据,不会保存在此表里,只要曾经插入过数据,无论当前是否有数据,该值都会存在。

做Android开发其实经常打开sqlite数据文件,以前也看到过系统表,只是从来没有研究过,趁此机会看个明白。在sqlite数据库文件中,一旦你建表,就会在系统目录(SystemCatalogue)下自动生成2个系统表sqlite_master和sqlite_sequence。sqlite_master保存了所有表的信息,包括type,是table或者index等,name和tbl_name,二者看起来内容一样。还有一个rootpage,可能是建表顺序。sql在类型是table的时候就是建表的sql语句。当你的表中有自增长的字段时,sqlite_sequence就会保存下表名和该字段的序列值,当然前提是你已经插入过数据,否则不会保存。