Экранирование SQL и массовая вставка в Java - PullRequest
0 голосов
/ 02 апреля 2012

Моя цель - sql-экранирование в запросе массовой вставки. Например:

INSERT INTO log VALUES (0,5,-7,'str'), (4,0,0,'str'), (0,0,0,'str');

Код вставляет в таблицу около 100-200 записей каждые 30 секунд. (Пул журналов).
Я не нашел способа использовать PreparedStatement для массовой вставки, поэтому мне пришлось вручную создавать этот запрос через StringBuilder.
Но я понятия не имею, как избежать строк, не очень-то хочется применять что-то вроде kludge-fixes (кавычки, выходящие через regex-replace и т. Д.).

Есть какой-нибудь удобный способ?

Ответы [ 2 ]

1 голос
/ 04 января 2013

До сих пор я знаю два пути.

1-й путь

Its insert record one by one

final String sql = "INSERT INTO tablename(columnname) Values(?)";

PreparedStatement statement = connection.prepareStatement(sql);

while (condition) {
statement.setString(1,value);
statement.executeUpdate();
}

2-й способ

Вставляет всезаписать как массовую вставку

final String sql = "INSERT INTO tablename(columnname) Values(?)";

PreparedStatement statement = connection.prepareStatement(sql);

while (condition) {
statement.setString(1,value);
statement.addBatch();
}

statement.executeBatch();
0 голосов
/ 03 апреля 2012

Вам необходимо использовать PreparedStatement и, возможно, пакетную вставку. Смотри http://www.exampledepot.com/egs/java.sql/BatchUpdate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...