我正在开发一个使用带有 FTS4 表的 SQLite 数据库的 Android 应用程序。
在应用程序中有一个从外部存储器导入数据库的选项。需要检查此数据库以确认它具有所有正确的表和列。我已经有了执行此操作的代码,但是我不知道如何检查表是“正常”还是 FTS4。这将导致稍后对MATCH
它们进行查询时出现问题。
我能想到的检查表是否为 FTS4 的唯一方法是进行随机查询,MATCH
如果出现错误,那是因为它们不是。
有没有更好的方法来做到这一点,就像只用一个命令?
仅当表至少有一行时,对普通表使用 MATCH 会导致错误消息。
FTS 表有一个与表名同名的虚拟列。所以你可以尝试这样的查询SELECT MyTable FROM MyTable
。
您可以检查影子表(MyTable_content
、MyTable_segdir
等)是否存在。
您可以检查系统表中的 CREATE TABLE 语句:SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'MyTable';