2013-08-05 25 views
0

我將現有的SQLite數據庫從資產複製到數據庫文件夾。當我試圖從表(光澤)的一個檢索數據則給了一個錯誤:SQLite中的表計數

android.database.sqlite.SQLiteException: no such table: gloss: , while compiling: SELECT DISTINCT id, fk, lang, value FROM gloss WHERE value like '%a%'

我想,以確保所有的表都複製到新的數據庫內「數據/數據/包/數據庫/」 如何獲得SQLite數據庫中的表的數量?

回答

3

你爲什麼從/assets移動它?要計算表,你應該使用此查詢:

SELECT count(*) FROM sqlite_master 
WHERE type = 'table' AND name != 'android_metadata' AND name != 'sqlite_sequence'; 

編輯**

看來,我的實現是錯誤的。與其他答案一起使用查詢。

+0

的代碼是錯誤的;該查詢將返回包含表計數的單個記錄,但代碼只計算記錄。 –

+0

完成。感謝您的更正。 –

3

由於@CL從註釋:

String SQL_GET_ALL_TABLES = "SELECT count(*) FROM sqlite_master 
            WHERE type = 'table' AND 
             name != 'android_metadata' AND 
             name != 'sqlite_sequence';" 
return db.compileStatement(SQL_GET_ALL_TABLES).simpleQueryForLong(); 
+0

與路易斯的回答一樣的錯誤。 –

+0

光標的計數會正確計數。請另外說明。我好奇。 – amalBit

+0

遊標的數量會給出記錄的數量。 'count(*)'將返回*一個*記錄。 –