2012-08-09 72 views
0

我想搜索整個數據庫表中的特定字符串並獲取匹配列的行詳細信息。比如我有表像之下使用Sqlite3在整個數據庫中搜索特定的字符串?

**name email address designation** 
    sai [email protected] 75385  nagar 
    thiru [email protected] 75893  city 

現在我有像「納加」或「瑟爾」如何能爲它做準備查詢的搜索關鍵字。如果有人知道請幫助我。提前致謝。

+0

請告訴me.You需要在搜索特定的列一個特定的字符串。 – 2012-08-09 12:22:03

+0

你明白我的問題嗎? – Thiru 2012-08-10 04:29:28

回答

2

讀取整個表變成一個光標,在每列搜索得到的列名。

可能是這樣的:在DataBaseAdapter類

private String getColumnName(String key){ 
    String columnName=""; 
    DataBaseAdapter dba=new DatabaseAdapter(getApplicationContext()); 
    dba.open(); 
    Cursor cr=dba.fetchAllData(); 
    cr.moveToFirst(); 
    while(!cr.isAfterLast()){ 
      if(key.equals(cr.getString(cr.getColumnIndex("name")))){ 
        columnName="name"; 
      } 
      cr.moveToNext(); 
    } 
    cr.moveToFirst(); 
    while(!cr.isAfterLast()){ 
      if(key.equals(cr.getString(cr.getColumnIndex("email")))){ 
        columnName="email"; 
      } 
      cr.moveToNext(); 
    } 
    cr.moveToFirst(); 
    while(!cr.isAfterLast()){ 
      if(key.equals(cr.getString(cr.getColumnIndex("address")))){ 
        columnName="address"; 
      } 
      cr.moveToNext(); 
    } 
    cr.moveToFirst(); 
    while(!cr.isAfterLast()){ 
      if(key.equals(cr.getString(cr.getColumnIndex("designation")))){ 
        columnName="designation"; 
      } 
      cr.moveToNext(); 
     } 
     return columnName; 
    } 

fetchAllData()函數包含下面的代碼:

public Cursor fetchAllData(){ 

    try { 
    return database.query(TABLENAME, null, null, null, null, 
    null, null); 
    } catch (Exception e) { 
    return null; 
    } 
} 

這將給你的關鍵的列名。

所以,現在很容易這樣運行查詢:

String query= "SELECT * FROM tablename where "+getColumnName()+"='"+key+"'" ; 
1

嘗試此查詢..

SELECT * FROM tablename WHERE name = 'nagar' or email = 'nagar' or address = 'nagar' or designation = 'nagar'; 

SELECT * FROM tablename WHERE name or email or address or designation = 'nagar'; 
+0

感謝您的寶貴答案。當我具有完整的值(例如name =「thiru」)時,這將工作正常,但我只用關鍵字「th」進行搜索。我必須找到值存在於哪一列和哪一行。如何在這種情況下編碼? – Thiru 2012-08-10 04:53:29