java级联sql语句插入

pkwftd7m  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(269)

这个问题在这里已经有答案了

用java在一条语句中执行多个查询(6个答案)
两年前关门了。
我有一个脚本,需要在一个语句中插入多个内容,比如

sql = "INSERT INTO `table` (something, something) VALUES (smth,smth); INSERT INTO `table` (something, something) VALUES (smth,smth)";
Statement stmt = connection_db.createStatement();  
 boolean update = stmt.execute(sql);

长sql是根据条件连接起来的,需要这么长。在phpmyadmin中使用这种sql语句是有效的,插入它没有问题,但是java抛出了一个错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO `

我可以做些什么来插入这种sql,或者我应该重新编写代码来多次启动以获得相同的结果吗?

6ss1mwsb

6ss1mwsb1#

只传递多个值
请参见以下语法:

INSERT INTO tbl_name
    (something, something)
VALUES
    (1,2),
    (4,5),
    (7,8);
vu8f3i0k

vu8f3i0k2#

一种简单的方法是使用批处理sql insert

sql = "INSERT INTO `table` (something, something) 
          VALUES (smth,smth), (smth,smth)";

这是一个标准的sql工具,可以用一个查询插入更多的行

ca1c2owp

ca1c2owp3#

您必须拆分sql并对其进行迭代:

sql = "INSERT INTO `table` (something, something) VALUES (smth,smth); INSERT INTO `table` (something, something) VALUES (smth,smth)";
sqls = sql.split(";");
for(int i=0; i<sqls.length;sqls++) {
  statement = connection.prepareStatement(sqls[i]);
  statement.execute();
}

相关问题