Я хочу выбрать все записи из базы данных, используя WHERE IN, используя значения из массива, который у меня есть. Есть ли способ передать массив в запрос? Я пробовал SELECT id FROM tag WHERE name IN "+myArray.toString()+"
. Но, конечно, это обречено на неудачу) Я мог бы использовать подготовленныйStatement, но количество значений всегда разное и довольно большое - 5000 или около того. Или, может быть, я должен использовать другой подход?
Postgres SELECT WHERE IN массив в Java
comment
Вы всегда должны использовать подготовленные операторы вместо объединения строк для создания SQL. Взгляните на MyBatis или Hibernate, если вы хотите немного больше гибкости в отношении того, что вы можете использовать в качестве входных данных.
- person bakoyaro   schedule 31.07.2015
comment
Но я слышал, что prepareStatement намного медленнее, чем конкат строк. Это правда? (Хотя я знаю, что prepareStatement хорош против SQL-инъекций)
- person Sermilion   schedule 01.08.2015
Ответы (1)
Если вы не хотите использовать обычную конкатенацию для этого, просто используйте StringBuilder, который НАМНОГО более эффективен, поскольку фактически создает строку только при использовании метода toString().
private String ArrayToString(String[] array)
{
StringBuilder buffer = new StringBuilder();
buffer.append(array[0]);
for (int i = 1; i < array.length; i++)
{
buffer.append(",");
buffer.append(array[i]);
}
return buffer.toString();
}
person
Salomon Koen
schedule
31.07.2015