Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
#1

Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы - Android

17.01.2013, 00:04. Просмотров 879. Ответов 3
Метки нет (Все метки)

Здравствуйте! Мне нужно добавить возможность выборки из базы данных sqlite по русским буквам (содержащие известнрую проблему с like и uppercase). Делаю все по этой статье http://habrahabr.ru/post/122408/
Получаю откомпилированный файл libandroid_sqlite.so
Далее у автора так все расплывчато написано, я не пойму как его использовать.
Кто в курсе темы, пожалуйста, помогите..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 00:04     Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы
Посмотрите здесь:

Увеличивать записаное в таблице значение Android
Как сделать popup ? Пример того, что нужно, внутри Android
Считать с editText русские символы (киррилицу) в string Android
Android Как сделать поиск LIKE из БД не восприимчивым к регистру?
При создании базы данных кричит, что нужно сделать return в конструкторе Android
Android Не получается вводить русские символы в EditText
Android Метод .setText не показывает русские символы
Русские буквы в EditText Android studio Android
Android Не получается обновить строку в таблице БД
Русские буквы в имени ресурса Android
Android Что нужно знать, чтобы сделать приложение?
Удалить один элемент в таблице БД Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Razor23Donetsk
2 / 2 / 0
Регистрация: 20.02.2015
Сообщений: 23
20.06.2016, 20:55     Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы #2
Приведу пример решения на C#. Сразу скажу, что такой подход снижает производительность (http://dev.net.ua/blogs/def1983/page...rformance.aspx), но у меня с ним проблем пока не возникало, и работает всё именно так как и должно.
Для этого я использовал Пользовательскую Функцию (User-Defined Function) и создал вот такой класс :
C#
1
2
3
4
5
6
7
8
9
    [SQLiteFunction(Arguments = 1, FuncType = FunctionType.Scalar, Name = "ToUpper")]
    class UpperCaseConverter : SQLiteFunction
    {
        public override object Invoke(object[] args)
        {
            string initialString = (args[0] as string); //получаем исходную строку.
            return (initialString != null) ? initialString.ToUpper() : null; //Если строка != null, переводим в верхний регистр.
        }//Invoke
    }//UpperCaseConverter
Далее один раз за время работы программы надо зарегистрировать функцию (естественно до исп-ния ф-ции в коде) :
C#
1
2
3
4
5
6
7
            //Создаём подключение.
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                connection.Open(); //открываем подключение
                SQLiteFunction.RegisterFunction(typeof(UpperCaseConverter)); //регистрируем udf. 
                connection.Close(); //закрываем подключение
            }//using
Использование в коде:
C#
1
string query = "SELECT ToUpper(Column1) FROM Table;"
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
20.06.2016, 23:39     Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы #3
Мой вариант, возможно, слишком груб, но работает исправно. В таблице я делаю еще один столбец, куда заносится дубль столбца для поиска с кириллицей, но текст написан в uppercase. Поиск веду по этому столбцу, преобразовав запрос в uppercase. Вывод, естественно, из исходного столбца.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
21.06.2016, 12:25     Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы #4
Alexvp, собственно, это самое простое и распространённое решение. Правда, размер базы существенно увеличивается. И лучше lowercase, чтобы читать было приятнее. Давно прошли времена печатных машинок с большими буквами, а народ до сих пор лепит uppercase.
Yandex
Объявления
21.06.2016, 12:25     Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru