2012-08-10 124 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(); 
}