Java sql экранирование кавычек

Язык JAVA просто

Экранирование символов — это замена в тексте управляющих символов на соответствующие текстовые подстановки (Escape-последовательности).

Пример: В Java текст можно представить в виде типа String, для обозначения данных которого используются управляющие символы — парные кавычки, которые обозначают начало и конец строки. Поэтому, чтобы вывести в кавычки в тексте и программа не восприняла бы эти символы как управляющие, необходимо преобразовать их в escape-последовательности.

Экранированиесимволов в Java (Escape-последовательности Java) в строках (строковых литералах):

\” – экранирование двойной кавычки, помогает, например, вывести символ двойной кавычки в тексте;

Пример экранирования одинарной кавычки для инициализации типа char одинарной кавычкой:

\\ – экранирование обратной косой черты (\) (слэш)

Символ обратной косой черты экранируют, например, для указания, что последующий символ не будет являтся частью escape-последовательности или при работе с путями к файлам.

\t — Символ табуляции (в java – эквивалент четырех пробелов)

(Однако, если длина строки, состоящая из четырех пробелов будет равна длине четырех символов, то длина строки с символом табуляции будет равна одному)

Символ табуляции часто используется для построения таблиц или псевдографических элементов интерфейса, т.к. это удобнее записи четырех пробелов.

\b — Символ возврата в тексте на один шаг назад или удаление последнего символа в строке вывода, подобно нажатию на клавишу backspace.

\n — Символ перехода на новую строку подобно нажатию на клавишу Enter

\r — Символ возврата каретки позволяет нам вернуть курсор к началу строки вывода и отображать новую информацию так, как будто ранее в этой строке ничего не было

\f— для обозначения, что текст необходимо начать печатать с новой страницы (Прогон страницы к началу следующей страницы)

В java экранирование символов используется и в форматировании строк. Например, задавая формат строки для отображения символа процента, необходимо продублировать символ процента – %%, иначе получим ошибку, а IDE будет предлагать дописать процент.

Источник

Как экранировать одинарные кавычки для вставки SQL… когда вставляемая строка находится в пользовательской переменной

Вы можете использовать StringEscapeUtils из библиотеки Apache Commons Lang. Используя это, вы можете избежать символов из html, xml, sql и т.д. Ищите метод escapeXXX для вашей цели. Для справки: когда мне нужно избежать строки HTML?

String str = FileUtils.readFileToString(new File("input.txt")); String results = StringEscapeUtils.escapeHtml(str); System.out.println(results); 
 Here is some "Text" that I'd like to be "escaped" for HTML & here is some Swedish: Tack. Vars?god. 
<sometext> Here is some "Text" that I'd like to be "escaped" for HTML & here is some Swedish: Tack. Varsågod. </sometext> 

В документации StringEscapeUtils для escapeSQL: «В настоящее время этот метод превращает только одинарные кавычки в двойные одинарные кавычки»

Этот подход работает только в том случае, если вы намереваетесь позже использовать ввод как вывод HTML. Что касается устаревания, v3.6 из commons-lang все еще там и прекрасно работает с org.apache.commons.text. StringEscapeUtils .

Используйте собственный метод Android, предназначенный именно для этой цели:

DatabaseUtils.sqlEscapeString(String) 

Вот документация для него онлайн:

Главным преимуществом использования этого метода, на мой взгляд, является самодокументация из-за явного имени метода.

String userString="a'bcd"; String insertTableSQL = "INSERT INTO myTable " + "(insertColumn) " + "VALUES(" +"'"+DatabaseUtils.sqlEscapeString(userString)+"'" +")"; statement.executeUpdate(insertTableSQL); 

Ещё вопросы

  • 1 Линия между двумя перетаскиваемыми точками на холсте matplotlib pyqt5
  • 1 Как это сделать, если вы не хотите читать всю строку?
  • 1 UserControl Fire Событие при изменении свойства
  • 0 Создание настраиваемых пользователем функций в JavaScript или jQuery
  • 0 Кнопка поиска внутри поля поиска
  • 1 Как добиться старого появления сообщения об ошибке в дизайне материала TextInputLayout? [Дубликат]
  • 1 Объединение массивов Numpy 2d при гарантированном ненулевом равенстве
  • 1 Adview не отображается в Android
  • 0 Получение Mac (системного физического адреса) адреса успешно на локальном хосте, но не на сервере
  • 0 MySQL двухколонный уникальный ключ
  • 0 Как я могу удалить выбранную строку в таблице HTML, а также в MySQL, используя CodeIgniter?
  • 0 Можно ли использовать класс шифрования в коде воспламенителя для отправки защищенных данных в URL?
  • 0 Один пользователь несколько адресов доставки, как сделать это по умолчанию
  • 0 scanf может читать только 3 символа в 5-позиционном массиве символов
  • 0 JQuery Mouseleave стрельбы преждевременно в т. е. (8 и 9)
  • 0 Захватить jQuery Маскированный ввод Изменение ввода
  • 1 Как настроить app.config для получения тестовых данных из файла Excel с помощью Nunit?
  • 0 Скользить вверх переходы
  • 0 Выберите самый верхний недублированный элемент после упорядочения по другим столбцам [дубликаты]
  • 0 Как сделать так, чтобы изображение всегда загружалось в центре страницы?
  • 1 Получить значение из ListBox, содержащего TextBlocks, используя SelectedItem в WPF
  • 0 используя jQuery, чтобы снять все флажки, а затем проверить установленный
  • 1 Захват изображения с камеры. Фрагмент потерян, перейдите к предыдущему фрагменту.
  • 1 Mastercard Обходной путь для сторонних cookie-файлов отключенных пользователей
  • 0 Граница не адаптируется к стилю списка: нет;
  • 0 Как отобразить массив объектов в шаблоне страницы в Pyramid?
  • 1 Любые предложения о том, как я могу создать ссылку электронной почты в кнопке Java
  • 0 Невозможно использовать возвращаемое значение метода в контексте записи
  • 0 Размер текстового поля Yii timepicker
  • 0 Присоединение узла к LinkedList
  • 0 содержание аккордеона не отображается — JQuery
  • 1 Asp.Net C # MVC Динамические формы (изменение структуры Dom и получение данных на сервер)
  • 1 Как вызвать Interstitial, нажав на элемент в списке, который проходит через адаптер?
  • 0 Как правильно выровнять то, что изменяет размеры в определенном месте
  • 0 Создание редактируемого выпадающего списка
  • 1 правильный ООП и гибкость между классами в Java
  • 0 как не выбрать некоторые данные с помощью xpath в webharvest
  • 0 QDialog закрашивает виджеты черным при добавлении новых
  • 1 Метод, который принимает строго типизированное имя свойства в качестве параметра
  • 0 Как использовать функцию std :: transform ()
  • 1 Создание прокручиваемого «графика» в c # (визуализация данных)
  • 0 Получение информации о состоянии браузера с помощью JQuery
  • 1 Использование argv для изменения каталога при запуске файла python
  • 0 Facebook API — реализация приглашения друзей, как на Quora
  • 1 Некоторые поля в документе могут быть пустыми, и если я пытаюсь получить результат, приложение вылетает из-за nullPointerException [duplicate]
  • 0 Доступ к области действия из другой директивы
  • 0 php array_rand многомерное значение
  • 1 Поворот холста и представление растрового изображения

Источник

Как экранировать символы кавычек «» в MySQL и Java

Как мы можем избежать символов quotes «» в Java и MySQL?

Входящий XML-файл содержит кавычки, и я анализирую этот файл с помощью Java. Поэтому я хочу избежать кавычек здесь, но в базе данных они должны содержать кавычки. Когда я делаю запрос, в результате будут кавычки. При отображении на веб-странице также должны отображаться цитаты.

Входящий xml-файл имеет кавычки, и я анализирую этот файл с помощью java, поэтому я хочу избежать кавычек здесь, но в базе данных он должен содержать кавычки, и пока я выполняю запрос, результат будет иметь кавычки, а при отображении на веб-странице также должен показывать кавычки. Надеюсь, я немного проясняю себя

Вы задаете кучу разных вопросов. Экранирование XML, экранирование Java, экранирование SQL и экранирование для «веб-страниц» (которые могут быть, например, комбинацией HTML, JavaScript и CSS) — все это разные вещи.

5 ответов

Позвольте мне попытаться понять .

Входящий файл содержит кавычки. Вы хотите отправить его в базу данных. Когда вы получите его обратно из базы данных, вы все равно захотите, чтобы эти цитаты были там.

Итак, проблема возникает только в базе данных или из нее?

Если это так, то я очень подозреваю, что вы делаете что-то в следующем порядке: (я помещаю это в заявление об отказе от ответственности, чтобы ничего не подозревающие не понимали и не вставляли / вставляли в свои собственные приложения.;))

Плохо — не делай этого

String sql = "insert into foo (bar,baz) values(" +myValue1 + ", " + myValue2 + ")"; Statement stmt = connection.createStatement(); stmt.executeUpdate(sql); 

Плохо — не делай этого

Если это так, то вам действительно следует использовать как минимум параметры подготовленного оператора. а) вы будете менее уязвимы для вредоносного мусора, удалив все ваши таблицы, и б) у вас не будет проблем с побегом.

String sql = "insert into foo (bar, baz) values( ?, ? )"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, myValue1); stmt.setString(2, myValue2); stmt.executeUpdate(); 

Обратите внимание, что это также безопаснее в случае таких вещей, как CLOB и особенности различных реализаций баз данных (я думаю о вас, Oracle>))

Если это какой-то другой вид экранирования, то есть в / из XML или в / из HTML, тогда это другое, но оно хорошо документировано во всей сети.

Или предоставьте пример кода, если я совершенно не в курсе.

Ааа! Спасибо! У меня были проблемы с escape-символами в очень похожей ситуации, и я также задавался вопросом об уязвимостях SQL Injection. Разговор об убийстве двух зайцев одним выстрелом, спасибо.

Типичный escape-символ для всего — это обратная косая черта \ .

Источник

Читайте также:  Java string size method
Оцените статью