如何从数据库中检索所有表? (Android,SQLite)[重复]
Posted
技术标签:
【中文标题】如何从数据库中检索所有表? (Android,SQLite)[重复]【英文标题】:How do I retrieve all the tables from database? (Android, SQLite) [duplicate] 【发布时间】:2012-05-21 06:39:02 【问题描述】:可能重复:How do I list the tables in a SQLite database file
我正在尝试制作一个简单的界面来使用 android 设备创建一个简单的数据库。例如,将我的家庭电影收藏插入数据库的程序。也许我从一开始就错了,但这是我的尝试:
在这里,我从字段中检索数据并将它们插入到新表中。
EditText title = (EditText)findViewById(R.id.Title);
String Title = title.getText().toString();
EditText d = (EditText)findViewById(R.id.director);
String Director = d.getText().toString();
SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS " + Title + " (Title VARCHAR, Director VARCHAR);");
db.execSQL("INSERT INTO " + Title + "(Title) VALUES('" + Title + "');");
db.execSQL("INSERT INTO " + Title + " (Director) VALUES('" + Director + "');");
db.close();
因此,对于每个新标题,我都会创建一个新表。但是后来我需要所有这些表在一个新的活动中作为一个列表或类似的东西打印出来。但我不知道如何从数据库中获取所有表。
我找到了命令:
SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
Cursor c = db.rawQuery("SELECT * FROM tablename", null);
但如果我知道它的名称,它只适用于一个表,我需要的是从它们中获取所有表和数据。
你能帮帮我吗?
【问题讨论】:
【参考方案1】:使用这个运行查询:
Cursor c = db.rawQuery("SELECT * FROM films.sqlite_master WHERE type='table'",null);
编辑
我忘了这是 Android,rawQuery 已经有了表名。这应该有效:
Cursor c = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table'",null);
【讨论】:
哦,我试过了,但是 DDMS 说“没有这样的表films.sqlite_master”,所以他认为它是表名films.sqlite_master。 好的,试试"SELECT * FROM sqlite_master WHERE type='table'"
。我忘了我们说的是安卓。
非常感谢!现在我将考虑如何对这些表进行排序以及如何使用它们。
所以现在我选择了所有表,但它们都有相似的列,那么我要从它们中检索数据的方式是什么?
使用 SELECT 或类似方法手动遍历每个表以查看行。 Reference以上是关于如何从数据库中检索所有表? (Android,SQLite)[重复]的主要内容,如果未能解决你的问题,请参考以下文章