我正在尝试根据根页号/ tbl_name获取一个表并存储在自定义TableObject中。
我可以通过根页号/ tbl_name获取表名,但我不知道从该表中获取行值。
这就是我所拥有的:
SELECT * FROM sqlite_master WHERE name='test1';
或
SELECT * FROM sqlite_master WHERE rootpage=4;
现在我如何获得 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
从结果表中获取值。
答案 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"中获得您需要的结果。
希望这可以帮助你:)