2013-11-24 33 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批量插入」 – isnot2bad

+0

謝謝! +1接受 – Donotello

1

試試這個:

INSERT INTO表(列1,列2)VALUES (值1,值2),(值1,值) 這將是數據庫中的一個聲明爲好,更高效。或者將你的陳述分成許多陳述。

從性能角度來看,第一種選擇更好。

我假設你的程序根據某些數據源的數據自動生成語句。在生成字符串時,當您達到接近上限時,停止並將查詢發送到數據庫,然後從下一個開始。

相關問題