Android SQLite中的表计数

Android SQLite中的表计数,android,sqlite,count,Android,Sqlite,Count,我将现有SQLite数据库从assets复制到databases文件夹。当我试图从一个表(gloss)中检索数据时,它给出了一个错误: android.database.sqlite.SQLiteException:没有这样的表:gloss:,而 编译:从gloss WHERE value中选择DISTINCT id、fk、lang、value 像“%a%” 我想确保所有表都复制到“data/data/package/databases/”中的新数据库中 如何获取SQLite db中的表数?为什

我将现有SQLite数据库从assets复制到databases文件夹。当我试图从一个表(gloss)中检索数据时,它给出了一个错误:

android.database.sqlite.SQLiteException:没有这样的表:gloss:,而 编译:从gloss WHERE value中选择DISTINCT id、fk、lang、value 像“%a%”

我想确保所有表都复制到“data/data/package/databases/”中的新数据库中
如何获取SQLite db中的表数?

为什么要将其从
/assets
移动?要统计表,应使用以下查询:

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


看来我的实现是错误的。将查询与其他答案一起使用。

为什么要将其从
/assets
移动?要统计表,应使用以下查询:

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


看来我的实现是错误的。将查询与其他答案一起使用。

感谢评论中的@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();

感谢@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();

代码是错误的;查询返回一条包含表计数的记录,但代码只对记录进行计数;查询返回一条包含表计数的记录,但代码随后只对记录进行计数。游标的计数将正确给出计数。请另作解释。我很好奇。光标的计数将给出记录的数量
count(*)
将返回一条记录。如果您知道,请提供答案,我将删除我的记录。
返回db.compileStatement(SQL\u GET\u ALL\u TABLES)。simpleQueryForLong()现在您的答案不完整…光标的计数将正确给出计数。请另作解释。我很好奇。光标的计数将给出记录的数量
count(*)
将返回一条记录。如果您知道,请提供答案,我将删除我的记录。
返回db.compileStatement(SQL\u GET\u ALL\u TABLES)。simpleQueryForLong()现在您的答案不完整…