在Android中搜索SQLite数据库

时间:2011-11-17 13:16:11

标签: android sqlite search

我在Android应用中搜索SQLite数据库时遇到了一些麻烦。我使用搜索界面将搜索变量(searchActivity.query)传递给:

   //searchActivity.query obtained from: 
   //String query = searchActivity.getStringExtra(SearchManager.QUERY);

   String searchString = "'" + searchActivity.query + "%'";

   //sqlitedb is called via: private SQLiteDatabase sqlitedb;

   Cursor cursor = sqlitedb.query(DATABASE_TABLE, new String[] 
    {"id", "FirstName","LastName"}, 
    "FirstName LIKE " + searchString, null, null, null, null);

    int index_CONTENT = cursor.getColumnIndex(FirstName);

    for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
        result = result + cursor.getString(index_CONTENT) + "\n";
    }

问题是使用“LIKE”语句会输出数据库中的所有内容 - 这无法使用搜索界面。我不太确定我哪里出错了。

我尝试用“=”替换LIKE,除非没有显示任何内容,即使我100%确定记录存在。

非常感谢任何帮助!

提前致谢,

更新: 对这个误导性的标题感到抱歉。我没有正确传递搜索查询。

4 个答案:

答案 0 :(得分:2)

String sql = " SELECT * FROM Table WHERE xColumn LIKE '%"+textView1.getText().toString()+"%'";
cursor = db.rawQuery(sql, null); 

您可以按上述方式使用

答案 1 :(得分:2)

Cursor c = sqLiteDatabase.query(SQLiteHelper.MYDATABASE_TABLE, null, null, null, null, null, SQLiteHelper.KEY_CONTENT1 +" ASC");

答案 2 :(得分:0)

试试这个,

Cursor cursor = sqlitedb.query(DATABASE_TABLE, new String[] 
    {"id", "FirstName","LastName"}, 
    "FirstName LIKE '"+searchActivity.query+"%'", null, null, null, null);

让我知道发生了什么......

答案 3 :(得分:0)

您应该绑定参数。

query = "UPPER(" + COLUMNNAME + ") like ?";
String searchString = searchActivity.query + "%"; 

然后,

sqlitedb.query(DATABASE_TABLE, new String[] 
{"id", "FirstName","LastName"}, 
query , new String[] {searchString},....);