мне нужно сделать строку для SQLite выбрать functionin формат:StringBuilder, исчезающие кавычки
... И value_data В ('FOX', 'Бартлетт')
где «FOX» и «BARTLETT» являются заполнителями для имен переменных 1+, все они окружены одинарной кавычкой и запятой. Вот мой код:
StringBuilder build = new StringBuilder();
build.append(") AND value_data IN (");
build.append("'" + values[0] + "'"); //guaranteed first value
for(int l = 1; l < (values.length); l++){
build.append(",'" + values[l] + "'"); //any number of values afte
}
build.append(")");
Но когда я распечатать build.toString(), я получаю это:
... И value_data IN ('FOX, Bartlett')
Внутренние одинарные кавычки, которые должны быть до и после запятой, исчезают. Я смотрел по всему Интернету (этот сайт и другие) для ответа, но не могу его найти. Почему эти кавычки исчезают и как я могу сделать строковое построение, как показано вверху?
Ваш код верный. Вы уверены, что 'values' фактически содержит два элемента, а не одну строку, равную« FOX, BARTLETT »? – yole
1. Тогда 'values [0]' не содержит того, что вы думаете; ваши кавычки не исчезают, и ваш опубликованный код в порядке, но ваш массив значений был заполнен неправильно. 2. Как правило, вы не хотите создавать SQL-запросы таким образом. Хотя это может быть хорошо для вашей небольшой одноразовой программы, вы должны избегать строк перед созданием запроса. Гораздо лучше, однако, использовать ['PreparedStatement'] (http://software-security.sans.org/developer-how-to/fix-sql-injection-in-java-using-prepared-callable-statement). –
Либо то, что упоминалось выше, либо вы используете старую версию своего кода, которая не имеет этих котировок ... (например, в старые времена использования Eclipse). – Augusto