我对 Android 很陌生,最近我遇到了这样的问题:
我使用 Android 联系人数据库,特别是数据表。我在那儿放了一些新的 mimetype 信息,并试图在搜索过程中寻找这些信息。问题是,我使用的是 SQLite LIKE 运算符,它对非拉丁字符区分大小写。另一个问题是我无法以任何方式更改数据库,因为它是 android 内置数据库。
Builder builder = Data.CONTENT_URI.buildUpon();
loader.setSelection(getIndividualsSelection());
query = query.trim();
if( (null != query) && !query.equals("")){
loader.setSelection(Data.MIMETYPE + "='" +
MY_MIMETYPE + "' " + " AND ( " +
MY_DATA_COLUMN +
" LIKE '"+ query + "%' " +
specialCharsEscape + " COLLATE NOCASE)");
loader.setSelectionArgs(null);
loader.setUri(builder.build());
loader.setProjection(MY_PROJECTION);
loader.setSortOrder(MY_SORT_ORDER);
}
这都在 LoaderCallbacks 的 onCreateLoader 函数内部,其中 loader 是 CursorLoader 类型的。你知道如何强制我的 SQLite 不区分大小写吗?
我已经尝试过使用 SQLite 函数 UCASE 和 LCASE 但它不起作用。使用正则表达式会导致该数据库出现异常以及使用 MATCH... 将不胜感激。