2013-11-24 5 views
0

У меня есть строкаКак отправить строку продолжения в базу данных?

String myqu = " INSERT INTO mytable1 VALUES (1, 'xxx', 5); INSERT INTO mytable1 VALUES (2, 'xxttx', 6); INSERT INTO mytable1 VALUES (3, 'gttxxx', 5); INSERT INTO mytable1 VALUES (4, 'xxgtx', 7); INSERT INTO mytable1 VALUES (5, 'xxgtx', 5); // very long ..."

Мне нужно отправить его в базу данных.

Я попытался

Statement stmt = connection.createStatement(); 
stmt.executeUpdate(myqu); 

// also tried 

PreparedStatement prstmt = connection.prepareStatement(myqu); 
prstmt.executeUpdate(); 

Оба метода работают только тогда, когда я использую короткие строки (как String myquShort = " INSERT INTO mytable1 VALUES (1, 'xxx', 5);).

Однако, когда я использую String myqu (30000 символов), запросы выдаст ошибку: Truncated string ...

Как я могу его преодолеть?

+0

Кстати, это «SQL» не «сиквел». – yshavit

ответ

2

Не отправляйте сразу несколько операторов SQL! Отправить каждое заявление отдельно! Вы можете использовать подготовленный оператор для пакетных вставок.

+1

Если я разделил свою строку 'String myqu' на многие маленькие строки, она будет работать и может отправляться затем по одному ... но это займет навсегда – Donotello

+0

Google для« jdbc batch insert » – isnot2bad

+0

Спасибо! +1 принят – Donotello

1

Попробуйте это:

INSERT INTO таблица (Column1, Столбец2) ЗНАЧЕНИЯ (Значение1, значение2), (Значение1, значение2) Это будет один оператор для базы данных, а также и более эффективным.

или нарушите ваши заявления во многих заявлениях.

С точки зрения производительности, первый вариант лучше.

Я предполагаю, что ваша программа автоматически генерирует операторы на основе данных из какого-либо источника. При создании строки, когда вы приближаетесь к верхнему пределу, остановите и отправьте запрос в базу данных и начните дальше.

Смежные вопросы