我想搜索整個數據庫表中的特定字符串並獲取匹配列的行詳細信息。比如我有表像之下使用Sqlite3在整個數據庫中搜索特定的字符串?
**name email address designation**
sai [email protected] 75385 nagar
thiru [email protected] 75893 city
現在我有像「納加」或「瑟爾」如何能爲它做準備查詢的搜索關鍵字。如果有人知道請幫助我。提前致謝。
我想搜索整個數據庫表中的特定字符串並獲取匹配列的行詳細信息。比如我有表像之下使用Sqlite3在整個數據庫中搜索特定的字符串?
**name email address designation**
sai [email protected] 75385 nagar
thiru [email protected] 75893 city
現在我有像「納加」或「瑟爾」如何能爲它做準備查詢的搜索關鍵字。如果有人知道請幫助我。提前致謝。
讀取整個表變成一個光標,在每列搜索得到的列名。
可能是這樣的:在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+"'" ;
嘗試此查詢..
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';
感謝您的寶貴答案。當我具有完整的值(例如name =「thiru」)時,這將工作正常,但我只用關鍵字「th」進行搜索。我必須找到值存在於哪一列和哪一行。如何在這種情況下編碼? – Thiru 2012-08-10 04:53:29
請告訴me.You需要在搜索特定的列一個特定的字符串。 – 2012-08-09 12:22:03
你明白我的問題嗎? – Thiru 2012-08-10 04:29:28