如何从数据库中检索所有表? (Android,SQLite)

时间:2012-05-13 13:29:42

标签: android sqlite

  

可能重复:
  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();

因此,对于每个新标题,我创建一个新表。但后来我需要所有这些表在一​​个新的Activity中打印它们作为列表或类似的东西。但我不知道如何从数据库中获取所有表。

我找到了命令:

SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
Cursor c = db.rawQuery("SELECT * FROM tablename", null);

但如果我知道它的名字,它只适用于一个表,我需要的是从它们获取所有表和数据。

你能帮我吗?

1 个答案:

答案 0 :(得分:2)

使用以下命令运行查询:

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);