2016-08-04 15 views
0

Ich entwickle eine Android-App, die eine SQLite-Datenbank mit FTS4-Tabellen verwendet.SQLite Überprüfen, ob Tabelle FTS4 ist

In der App gibt es eine Option zum Importieren einer Datenbank aus dem externen Speicher. Diese Datenbank muss überprüft werden, um zu bestätigen, dass sie alle korrekten Tabellen und Spalten enthält. Ich habe bereits den Code, um das zu tun, aber ich weiß nicht, wie man überprüft, ob die Tabellen "normal" oder FTS4 sind. Dies führt später zu Problemen mit Abfragen mit MATCH auf ihnen.

Die einzige Möglichkeit, die ich überprüfen kann, ob die Tabellen FTS4 sind, ist eine zufällige Abfrage mit MATCH und wenn es einen Fehler erhält, ist es, weil sie nicht sind.

Gibt es eine bessere Möglichkeit, dies mit nur einem Befehl zu tun?

Antwort

1

Die Verwendung von MATCH in einer einfachen Tabelle führt nur dann zu einer Fehlermeldung, wenn die Tabelle mindestens eine Zeile enthält.

FTS-Tabelle haben eine virtuelle Spalte mit dem gleichen Namen wie der Tabellenname. So könnten Sie eine Abfrage wie SELECT MyTable FROM MyTable versuchen.

Sie könnten prüfen, ob die shadow tables (, MyTable_segdir usw.) existieren.

Sie können die TABLE-Anweisung in der Systemtabelle CREATE überprüfen: SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'MyTable';

+0

Dank. Ich mag deinen ersten Vorschlag. –