我有一个LIKE查询来搜索sqlite数据。我在我的数据库类中使用这样的LIKE查询:
String SearchResult = "SELECT * FROM city AS t1, region AS t2 ON t1.region_number = t2._id WHERE t1.name LIKE '%' || ? || '%';";
如何使搜索西里尔字母不敏感?
以下是我正在使用它的代码的一部分。这是一个城市目录,我可以通过城市名称找到城市代码:
package com.example.citycode;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends ActionBarActivity {
ListView lvData;
DBHelper db;
SimpleCursorAdapter scAdapter;
Cursor cursor;
Cursor cursor1;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Открываем подключение к БД
db = new DBHelper(this);
db.open();
// Получаем intent, проверяем действие и получаем query
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doMySearch(query);
return;
}
// Получаем курсор
cursor = db.getAllData();
startManagingCursor(cursor);
// Формируем столбцы сопоставления
String[] from = new String[] { DBHelper.COLUMN_r_name, DBHelper.COLUMN_region, DBHelper.COLUMN_code};
int[] to = new int[] { R.id.city_name, R.id.region_name, R.id.city_code };
// Создааем адаптер и настраиваем список
scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
lvData = (ListView) findViewById(R.id.listdata);
lvData.setAdapter(scAdapter);
}
public void doMySearch(String query) {
//Ищем совпадения
cursor1 = db.fetchRecordsByQuery(query);
startManagingCursor(cursor1);
String[] from = new String[] { DBHelper.COLUMN_r_name, DBHelper.COLUMN_region, DBHelper.COLUMN_code};
int[] to = new int[] { R.id.city_name, R.id.region_name, R.id.city_code };
scAdapter = new SimpleCursorAdapter(this,
R.layout.item, cursor1, from, to);
//Обновляем адаптер
lvData = (ListView) findViewById(R.id.listdata);
lvData.setAdapter(scAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Добавляем items в Action Bar
getMenuInflater().inflate(R.menu.options_main, menu);
// Получаем SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_settings).getActionView();
// Устанавливаем текущий activity как searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
return true;
}
protected void onDestroy() {
super.onDestroy();
// закрываем подключение при выходе
db.close();
}
}