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

Правильно составить запрос, содержащий "'" - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android ActionBar, всегда показывать троеточие http://www.cyberforum.ru/android-dev/thread1297105.html
Не могу понять, в 4.1.1 есть троеточие, а в 4.3 нету. Как принудительно сделать чтоб оно всегда было?
Программирование Android Прокси сервер и прокси порт в android sdk manager открываю android sdk manager, он пытается подключиться к интернетам, но у него не получается, т. к. Failed to fetch URL http://dl-ssl.google.com/android/repository/repository-10.xml, reason: IO... http://www.cyberforum.ru/android-dev/thread1296986.html
Программирование Android Как реализовать чтение txt файлов из папки по порядку?
Здравствуйте!Как реализовать чтение txt файлов из папки по порядку? Т.е. к примеру у меня есть папка1 в папке assets.В этой папке1 находятся 3-4 txt файла. Как мне по нажатию на button читать...
Программирование Android Программное изменение размеров Button
Добрый день! Начал изучать программирование на андроид. Решил написать простенькую игру. Нужно программным способом разместить на экране кнопки определённого размера, что бы в ширину экрана...
Программирование Android Список всех компонент http://www.cyberforum.ru/android-dev/thread1296584.html
Доброго времени суток! Скажу сразу, в Android я полный новичок, так что если скажу что-то бредовое - поправте. Есть ли какой-либо путь найти координаты TextView зная его текст? Добавлено через 3...
Программирование Android Работа с Websocket Кто сталкивался с вебсокетами, подскажите, пожалуйста. Пишу чат, сообщения гоняются по вебсокету, управление сокетами происходит в сервисе. Много ли ресурсов жрут открытые вебсокеты, стоит ли их... подробнее

Показать сообщение отдельно
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
12.11.2014, 11:19
Я ранее столкнулся с апострофами в операциях insert, update, но сегодня решил, на всякий случай, проверить, как себя ведут select'ы. Оказалось, что если пользователь в поиске использует апострофы, то программа падает. Потому что использовал такую форму: T.title LIKE '%" + pattern + "%'".
Использовал вот такой вариант: T.title LIKE " + DatabaseUtils.sqlEscapeString("%" + pattern + "%"). Вроде, работает.

Добавлено через 10 минут
Цитата Сообщение от Rube Посмотреть сообщение
находить их перед записью в БД и выкидывать
Этот вариант не очень хорош. Мне досталась программа как раз с таким способом работы, я отказался от него, потому что так нечестно.
Нужно использовать более правильные способы работы с БД. Вот два примера. http://habrahabr.ru/post/190876/ и http://tech.vg.no/2011/04/04/speeding-up-sqlite-insert-operations/
Используя их, я добился как увеличения скорости, так и обхода проблемы с апострофами. Если будет желание, напишу статью.
Вот мой код.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            helper = new Helper(context);
            SQLiteDatabase db = helper.getWritableDatabase();
            db.beginTransaction();
 
            sqlUpdate = "UPDATE revision SET revision = ? WHERE city_id = ? AND name LIKE ?";
            stmtUpdate = db.compileStatement(sqlUpdate);
 
            stmtUpdate.bindLong(1, rev);
            stmtUpdate.bindLong(2, city_id);
            stmtUpdate.bindString(3, name);
            stmtUpdate.execute();
 
            db.setTransactionSuccessful();
            db.endTransaction();
Со строками там надо быть осторожным. Как всегда, мало где написано. Если строка = null, то надо написать такую процедуру:
Java
1
2
3
4
5
6
    private void bindString(SQLiteStatement stmt, int index, String value) {
        if (value == null)
            stmt.bindNull(index);
        else
            stmt.bindString(index, value);
    }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru