Как заменить одинарную кавычку в Java на Postgres? - PullRequest
0 голосов
/ 21 апреля 2011

Как заменить одинарную кавычку в Java на Postgres?

select * from where id in ('<45646300.KDSFJJSKJSDF95'fdgdfgdfgd>', 'fdgdfgdg');

Я всегда использую такие параметры, как

select * from where id = ?;

Но в этом случае у меня возникает проблема, когда у меня есть 'in'оператор со строкой, переданной ему.

Я хочу заменить все опасные символы

Ответы [ 5 ]

3 голосов
/ 21 апреля 2011

Было бы лучше продолжать использовать PreparedStatement s, а не экранировать символы вручную.

В случае предложения IN вы можете динамически генерировать запрос с соответствующим числом ? s.

String[] input = ...;

StringBuilder b = new StringBuilder();
b.append("select * from where id in (");
b.append("?"); // Assume that input contains at least one element
for (int i = 1; i < input.length; i++) b.append(", ?");
b.append(")");

PreparedStatement s = c.prepareStatement(b.toString());

for (int i = 0; i < input.length; i++) s.setString(i + 1, input[i]);
1 голос
/ 21 апреля 2011

Используйте стандартные SQL-кавычки для одинарных кавычек:

select * 
from the_table
where id in ('<45646300.KDSFJJSKJSDF95''fdgdfgdfgd>', 'fdgdfgdg');

Таким образом, любая встроенная одинарная кавычка должна быть написана дважды.

1 голос
/ 21 апреля 2011

API Apache commons предоставляет несколько способов удаления опасных символов для определенных языков, таких как CSS, Javascript SQL и т. Д.

0 голосов
/ 21 апреля 2011

На сайте javaranch есть страница, объясняющая различные варианты

0 голосов
/ 21 апреля 2011

Вы пробовали?

select * from TABLE_NAME where id in (?);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...