2013-02-15 7 views
5

Ich habe Probleme beim Wechseln zwischen FTS3-Tabellen und normalen Datenbanktabellen. Meine Anwendung ist sehr einfach und ermöglicht es dem Benutzer, Kontakte zu einer Datenbank hinzuzufügen, und sie können nach Kontakten suchen, die der Suchabfrage entsprechen (warum ich eine fts-Tabelle verwendet habe) und das Ergebnis wird dann in einer Liste mit einem OnItemclicklistener angezeigt. Aber wenn ich auf das Element klicke, erhalte ich einen Fehler. Ich habe diesen Fehler zurück zur Datenbank verfolgt (wenn ich normale Datenbank benutze, funktioniert es, aber wenn ich fts verwende, tut es nicht). Also habe ich mich entschieden, beide Arten von Datenbanken zu verwenden, und mich gefragt, ob mir jemand zeigen könnte, wie ein Trigger zum Synchronisieren von Datenbanken erstellt wird.Wie kann ich einen Trigger zwischen normaler Tabelle und fts3 Tabelle erstellen?

Meine erste Datenbank ist CONTACT (Datenbankname) und die Tabelle heißt CONTACTS. Die zweite Datenbanktabelle ist CONTACTS_FTS. Alles was ich suche ist COL_NAME, also ist das alles was ich in meiner CONTACTS_FTS Tabelle brauche? Ich habe mich gefragt, ob jemand überprüfen könnte, ob mein Auslöser gültig ist.

public static final String DATABASE_NAME = "CONTACT"; 
public static final String DATABASE_TABLE = "CONTACTS"; 
private static final String DATABASE_TABLE_FTS = "CONTACTS_FTS"; 
private static final int DATABASE_VERSION = 20; 
private Context ourContext; 
private DbHelper DBHelper; 
private static SQLiteDatabase db; 
private static final String DATABASE_CREATE = 
    "CREATE TABLE " + DATABASE_TABLE + " (" + 
    COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
    COL_NAME + " TEXT NOT NULL, " + 
    COL_EMAIL + " TEXT NOT NULL, " + 
    COL_CELL + " TEXT NOT NULL, " + 
    COL_ARRIVAL + " TEXT NOT NULL, " + 
    COL_DEPARTURE + " TEXT NOT NULL, " + 
    COL_FLIGHT_NUMBER + " TEXT NOT NULL, " + 
    COL_HOTEL_ROOM_NUMBER + " TEXT NOT NULL, " + 
    COL_EVENT1 + " TEXT NOT NULL, " + 
    COL_EVENT2 + " TEXT NOT NULL, " + 
    COL_EVENT1_ROOM + " TEXT NOT NULL, " + 
    COL_EVENT2_ROOM + " TEXT NOT NULL);"; 

private static final String DATABASE_CREATE_FTS = 
    "CREATE VIRTUAL TABLE " + DATABASE_TABLE_FTS + " USING fts3(" + 
    "content=" + "\"CONTACTS\", " + 
    COL_NAME + ");"; 

private static final String Trigger = 
    "CREATE TRIGGER contacts_Trigger " + 
    "AFTER INSERT "+ "ON " + DATABASE_TABLE + 
    " BEGIN " + 
    "INSERT " + DATABASE_TABLE_FTS + " SET " + COL_NAME + " = new.COL_NAME WHERE " + COL_ID + " = old.COL_ID;" + 
    " END;"; 
+0

Sie finden diese Antwort jemals? – Lion789

Antwort

0

Ich denke, Option für "externen Inhalt" Tabelle ist nur für FTS4 und nicht für FTS3 verfügbar.

External Content FTS4 Tables

Versuchen FTS4 Tisch statt FTS3 verwenden.