2016-03-11 58 views
1

我想根據根頁編號/ tbl_name獲取表並存儲在自定義TableObject中。如何使用tbl_name從sqlite_master獲取錶行

我能夠通過根頁面編號/ tbl_name獲取表名,但我不知道從該表獲取行值。

以下是我有:

SELECT * FROM sqlite_master WHERE name='test1'; 

SELECT * FROM sqlite_master WHERE rootpage=4; 

這件事給了我其中有一個表中的一行。 enter image description here

現在我怎樣才能獲得test1的內容?

test1表中有兩行,分別叫做age和name。我如何訪問這些列?

最後我最終使用的遊標,因此查詢將是這樣的:

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

我建議你一旦使用遊標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")); 

爲了進一步從表「測試1」,你有從以前的查詢結果得到的結果,你可以做這樣的事情:

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

因此,您將從表「test1」中得到進一步結果。

希望這對你有所幫助:)

相關問題