Java MessageFormat-как я могу вставить значения между одинарными кавычками?
у меня возникли проблемы с использованием Java.текст.Объект MessageFormat.
Я пытаюсь создать инструкции SQL insert. Проблема, когда я делаю что-то вроде этого:
MessageFormat messageFormat = "insert into {0} values ( '{1}', '{2}', '{3}', {4} )";
Object[] args = { str0, str1, str2, str3, str4 };
String result = messageFormat.format(args);
Я получаю это значение result
:
"insert into <str0> values ( {1}, {2}, {3}, <str4> )"
как вы можете видеть, проблема заключается в том, что любые целевые местоположения, заключенные в одинарные кавычки, не заменяются аргументами. Я пробовал использовать двойные одинарные кавычки, как это:''{1}''
и экранированные символы вот так:'{1}'
но это все равно дает тот же результат.
edit: я забыл упомянуть, что я также пытался '''{1}'''
. В результате получается:"insert into <str0> values ( '{1}', '{2}', '{3}', <str4> )"
. Он сохраняет исходные кавычки вокруг, но все еще не вставляет значения.
как я могу решить эту проблему? Для записи, я использую JDK 6u7.
5 ответов:
Я просто попробовал двойные кавычки, и это сработало отлично для меня:
MessageFormat messageFormat = new MessageFormat("insert into {0} values ( ''{1}'', ''{2}'', ''{3}'', {4} )"); Object[] args = {"000", "111", "222","333","444","555"}; String result = messageFormat.format(args);
результат:
insert into 000 values ( '111', '222', '333', 444 )
это то, что вам нужно?
Извините, если это не так, но похоже, что вы пытаетесь скопировать PreparedStatement, который уже находится в JDBC.
Если вы пытаетесь создать SQL для работы с базой данных, я предлагаю вам посмотреть на PreparedStatement, он уже делает то, что вы пытаетесь сделать (с немного другим синтаксисом).
Извините, если это не то, что вы делаете, я просто думал, я хотел бы указать на это.
внутри строка, пара одинарных кавычек может быть использована для цитирования любых произвольных символов, кроме одинарных кавычек. Например, строка шаблона
"'{0}'"
представляет собой строку"{0}"
, а не FormatElement. Сама одинарная кавычка должна быть представлена двойными одинарными кавычками''
на протяженииString
. Например, строка шаблона"'{''}'"
интерпретируется как последовательность'{
(начало цитирования и левая фигурная скобка),''
(один цитата), и}'
(правая фигурная скобка и конец цитаты),не'{'
и'}'
(в кавычках слева и справа фигурные скобки): представляя строку"{'}"
,не"{}"
.