2013-11-24 35 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,值) 这将是数据库中的一个声明为好,更高效。或者将你的陈述分成许多陈述。

从性能角度来看,第一种选择更好。

我假设你的程序根据某些数据源的数据自动生成语句。在生成字符串时,当您达到接近上限时,停止并将查询发送到数据库,然后从下一个开始。

相关问题