我在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%确定记录存在。
非常感谢任何帮助!
提前致谢,
乔
更新: 对这个误导性的标题感到抱歉。我没有正确传递搜索查询。
答案 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},....);