如何使用tbl_name从sqlite_master获取表行

时间:2016-03-11 21:17:51

标签: android-sqlite android-cursor

我正在尝试根据根页号/ tbl_name获取一个表并存储在自定义TableObject中。

我可以通过根页号/ tbl_name获取表名,但我不知道从该表中获取行值。

这就是我所拥有的:

SELECT * FROM sqlite_master WHERE name='test1';

SELECT * FROM sqlite_master WHERE rootpage=4;

这件事给了我一排有一张桌子。 enter image description here

现在我如何获得 test1 内容?

test1表中有两行,称为年龄和名称。如何访问这些列?

最后我最终使用了光标,因此查询将类似于:

 cursor=db.rawQuery("SELECT * FROM sqlite_master WHERE rootpage = '" + rootNumber + "'",null);

我可以用

cursor.getString(getColumnIndex("name"))      //w.r.t sqlite_master

cursor.getString(getColumnIndex("rootpage"))  //w.r.t sqlite_master

如何使用相同的光标来获取类似的内容:

cursor.getString(getColumnIndex("age"))      //w.r.t test1
cursor.getString(getColumnIndex("name"))      //w.r.t test1

从结果表中获取值。

1 个答案:

答案 0 :(得分:1)

我建议你一旦使用游标A查询sqlite_master表,不要使用相同的游标A,因为它包含该查询结果的结果。

因此,您需要触发另一个查询并将下一个结果存储在另一个光标B中,这样您就不会丢失第一个查询中的数据。

例如,对于主表,您可以执行以下操作:

Cursor cursorA = db.rawQuery("SELECT * FROM sqlite_master WHERE rootpage = '" + rootNumber + "'",null);
cursorA.moveToFirst();
String tableName = cursorA.getString(getColumnIndex("name"));

为了进一步从表中得到结果" test1"你得到了上一个查询的结果,你可以这样做:

Cursor cursorB = db.rawQuery("SELECT * FROM '" + tableName + "'",null);
cursorB.moveToFirst();
String name= cursorB.getString(getColumnIndex("name")) ; 
int age= cursorB.getString(getColumnIndex("age")) ;

因此,您将从表格#34; test1"中获得您需要的结果。

希望这可以帮助你:)