2013-02-15 9 views
5

Mam problemy z przełączaniem między tabelami FTS3 i normalnymi tabelami bazy danych. Moja aplikacja jest bardzo prosta i pozwala użytkownikowi dodawać kontakty do bazy danych i może wyszukiwać kontakty pasujące do zapytania (dlaczego użyłem tabeli fts), a wynik jest wyświetlany na liście z listą onItemclicklistener. Ale po kliknięciu elementu pojawia się błąd. Usunąłem ten błąd z powrotem do bazy danych (jeśli używam normalnej bazy danych, działa, ale jeśli używam fts, to nie). Dlatego zdecydowałem się użyć obu rodzajów baz danych i zastanawiałem się, czy ktoś mógłby mi pokazać, jak wyzwalacz jest stworzony do synchronizacji baz danych.Jak utworzyć wyzwalacz między normalną tabelą a tabelą fts3?

Moja pierwsza baza danych to CONTACT (nazwa bazy danych), a tabela nazywa się CONTACTS. Druga tabela bazy danych to CONTACTS_FTS. Wszystko czego szukam to COL_NAME, więc czy to wszystko, czego potrzebuję w mojej tabeli CONTACTS_FTS? Zastanawiałem się, czy ktoś może sprawdzić, czy mój spust jest ważny?

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

Znasz tę odpowiedź? – Lion789

Odpowiedz

Powiązane problemy