2013-02-15 16 views
5

मुझे FTS3 तालिकाओं और सामान्य डेटाबेस तालिकाओं के बीच स्विचिंग समस्याएं आ रही हैं। मेरा आवेदन बहुत आसान है और उपयोगकर्ता को डेटाबेस में संपर्क जोड़ने की अनुमति देता है और वे उन खोजों की खोज कर सकते हैं जो खोज क्वेरी से मेल खाते हैं (क्यों मैंने एक fts तालिका का उपयोग किया) और इसके बाद परिणाम को Itemclicklistener के साथ एक सूची में प्रदर्शित किया जाता है। लेकिन जब मैं आइटम पर क्लिक करता हूं, तो मुझे एक त्रुटि मिलती है। मैंने इस त्रुटि को डेटाबेस में वापस खोज लिया है (यदि मैं सामान्य डेटाबेस का उपयोग करता हूं तो यह काम करता है, लेकिन अगर मैं fts का उपयोग करता हूं तो यह नहीं करता है)। तो मैंने दोनों प्रकार के डेटाबेस का उपयोग करने का फैसला किया है और यह सोच रहा था कि कोई मुझे दिखा सकता है कि डेटाबेस को सिंक करने के लिए ट्रिगर कैसे बनाया जाता है।मैं सामान्य तालिका और fts3 तालिका के बीच एक ट्रिगर कैसे बना सकता हूं?

मेरा पहला डेटाबेस संपर्क (डेटाबेस नाम) है और तालिका को संपर्क कहा जाता है। दूसरी डेटाबेस तालिका CONTACTS_FTS है। मैं जो भी खोज रहा हूं वह COL_NAME है, तो क्या मुझे अपनी CONTACTS_FTS तालिका में बस इतना कुछ चाहिए? मैं सोच रहा था कि कोई यह देखने के लिए जांच सकता है कि मेरा ट्रिगर मान्य है या नहीं?

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

आपको यह जवाब कभी मिला है? – Lion789

उत्तर

0

मुझे लगता है कि "बाहरी सामग्री" तालिका के लिए विकल्प केवल FTS4 के लिए उपलब्ध है, न कि FTS3 के लिए।

External Content FTS4 Tables

FTS3 के बजाय FTS4 तालिका का उपयोग करें।

संबंधित मुद्दे