2012-08-10 209 views
0

我有一個Android應用程序,它有一個小型數據庫作爲資產文件夾中的數據庫文件。該文件被稱爲nametoareamap.db.It有一個名爲'map'的表。該表有兩列(名稱和領域)如下:android sqlite數據庫光標

Names  Areas 

Aaron  A 

Chris  A 

Helen  B 

Tim   B 

我的應用程序需要的名稱作爲用戶輸入。假設一些用戶有投入:Aaron,Tim。 在這種情況下,就名稱而言,與數據庫有兩個匹配項。但他們來自不同的領域。 A的Aaron和B的Tim我想實現以下邏輯。

If match > = 2 && the area of the matches are same 

{ i take a decision} 

else 

{i decide something else } 

任何人都可以向我提供在Android上使用遊標和sqlite數據庫所需的代碼。我要提前一個數據庫適配器already.Thanks

+0

PLS更多的解釋,你想設置和從你的表中獲取數據還是什麼? – 2012-08-10 11:20:09

+0

嗨,我想從表中獲取數據... – 2012-08-11 04:25:49

回答

1

假設下面的表格佈局

CREATE TABLE name_area (
    _id INTEGER PRIMARY KEY NOT NULL, 
    name TEXT NOT NULL, 
    area TEXT NOT NULL, 
    UNIQUE(name, area) 
) 

而下面的值

name  area 
----  ---- 
Aaron  A 
Chris  A 
Bunny  A 
Ron  A 
Burgundy B 
Helen  B 
Tim  B 

說你想知道阿龍,羅恩和勃艮第的都是在同一區域內:

SELECT COUNT(*), area FROM name_area 
    WHERE name='Aaron' OR name='Ron' OR name='Burgundy' GROUP BY area 

這將返回兩行。

2 A 
1 B 

即兩個都在同一區域(A),一個是在另一個(B):

表示爲Cursor,你可以檢查它是這樣的:

Cursor cursor = ...; // Format your query & do the SELECT 
try { 
    if (cursor.moveToNext()) { 
     int count = cursor.getCount(); 
     if (count < 2) { 
      // Everyone is in the same area 
      int n = cursor.getInt(0); 
      // Now verify 'n' against the number of people you queried for 
      // if it doesn't match one or more didn't exist in your table. 
     } else { 
      // People are in different areas 
      int n = 0; 
      do { 
       n += cursor.getInt(0); 
      } while (cursor.moveToNext()); 
      // Now verify 'n' against the number of people you queried for 
      // if it doesn't match one or more didn't exist in your table. 
     } 
    } else { 
     // Oops nothing was found. 
    } 
} finally { 
    cursor.close(); 
}