2014-04-23 28 views
1

我有以下情況:Android的SQLite的查詢兩個表到一個ArrayList

表1 --1:

  • 兩個表的Android SQLite數據庫N - 表2

表1

- int id (PK) 
- text field2 
- text field3 
- text field N… 

ta ble2

  • INT ID(PK)
  • INT t1_id(FK)
  • 真正場3
  • 真正場N ...

接下來,我有以下的Android的Java結構:

Class Table1 { 
int id; 
String field2; 
String field3; 
String fieldN…; 
ArrayList<Table2> atable2; 
} 

Class Table2 { 
int id; 
int t1_id; 
double field3; 
double fieldN…; 
} 

public ArrayList<Table1> atable1 = new ArrayList<Table1>(); 

所以,我需要從數據庫中選擇數據到atable1數組根據如下所示的條件列表:

select * from table1 where table1.field2 = ‘Italy’; 

的問題是,數組列表atable1內的數組列表atable2必須基於來自表2的字段t1_id被選擇(table2.t1_id = table1.id)。

因此,任何人都可以幫助我構建一個有效的查詢形式(用於Android的sqlite)來獲取這些數據,包括來自table2的數據?

提前致謝!

此致

PS

+0

你會用什麼查詢?爲什麼你沒有足夠的效率? –

+0

首先,我得到了所有區域: openDatabase(); Cursor cur = myDataBase.rawQuery(「SELECT * FROM table1」+ 「WHERE table1.field2 LIKE'Italy'」,null); 和所有記錄拷貝到ArrayList atable1 接着,使一個用於循環進去atable1的atable2數組列表: 的openDatabase() 對(INT I = 0;我atable1.size()<;我+ + ){ Cursor cur = myDataBase.rawQuery(「SELECT * FROM table2」+ 「WHERE table2.table1_id ='」+ atable1.get(i).id +「'」,null); 接下來我將所有記錄從光標複製到atable1.get(i).atable2。 } – user3565080

+0

對於第一個查詢是正常的結果,5000到15000條記錄。對於第二個查詢是正常的,每個atable1條目大約有20到50條記錄。 使用這種方法,第二個查詢非常慢(幾分鐘)。 有沒有可能只提取一個查詢到數據庫的所有信息? 非常感謝! PS – user3565080

回答

0

有裝載的沒有有效的形式350000個記錄到存儲器的移動設備上。

但是你不需要,因爲你不能同時在屏幕上顯示它們。

將您的應用程序更改爲僅動態加載屏幕上當前可見對象的數據。