【发布时间】:2017-10-29 19:16:05
【问题描述】:
我正在尝试从 SQLite 数据库中获取表名列表。我设法得到了这个,但我也得到了像'android_metadata'和'sqlite_sequence'这样的临时表名。我想排除这 2 个。
但是,我无法让它正常工作。
SQLiteDatabase database =
getBaseContext().openOrCreateDatabase("vocabularyDatabase",
MODE_PRIVATE, null);
Cursor c = database.rawQuery( "SELECT name FROM sqlite_master
WHERE (type = 'table') AND (name NOT LIKE 'sqlite_sequence' OR
name NOT LIKE 'android_metadata') ",
null);
if (c.moveToFirst()){
while (!c.isAfterLast() ){
listOfWords.add(c.getString(c.getColumnIndex("name"))
);
c.moveToNext();
}
}
【问题讨论】:
-
这很奇怪。为什么不知道数据库的表?
-
嗯,我知道这些表,但想法是应用程序的用户已经将多个列表存储为数据库中的表,并且应该能够看到所有列表(表),以能够选择其中之一。所以这段代码只是为了测试代码。
-
这就是我的想法——你不应该在运行程序时创建表。数据库模式应该是固定的,并且只添加数据 - 而不是表。
-
SELECT name FROM sqlite_master WHERE (NOT (name = 'android_metadata' OR name LIKE '%sqlite_sequence%')) AND type = 'table'怎么样 -
致 Mike T:不幸的是,没有工作。 To juergen d:为什么不让用户做一张桌子?