我尝试在java中的sql表中插入行。我需要用2个不同的数据模拟插入表中。我使用2个查询将数据插入到dbo.Company从一些操作中获取到单个表中
statement1.executeUpdate("insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+cname[i]+"','"+ts+"','"+ts+"')");
statement3.executeUpdate("insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+EMpname[i]+"' ,'"+ts+"','"+ts+"')");
我需要使用单个查询将cname [i]和EMpname [i]插入到dbo.Company中...请帮助编写此查询。
答案 0 :(得分:1)
在表单中使用insert语句:
INSERT Table(fields)
VALUES
(set1),
(set2),
...,
(setN)
你的案子是:
statement1.executeUpdate("insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+cname[i]+"','"+ts+"','"+ts+"'),
('"+EMpname[i]+"' ,'"+ts+"','"+ts+"')");
答案 1 :(得分:1)
String query = "insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+cname[i]+"','"+ts+"','"+ts+"');" + "insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+EMpname[i]+"' ,'"+ts+"','"+ts+"')";
statement1.executeUpdate(query);
答案 2 :(得分:1)
自2008年以来支持多个VALUES
。如果您的服务器版本较低,请使用UNION
:http://blog.sqlauthority.com/2007/06/08/sql-server-insert-multiple-records-using-one-insert-statement-use-of-union-all/
答案 3 :(得分:0)
我建议使用交易。
Transaction tx = session.beginTransaction();
statement1.executeUpdate("insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+cname[i]+"','"+ts+"','"+ts+"')");
statement3.executeUpdate("insert into
dbo.Company(CName,DateTimeCreated,DateTimeLastModified)
values('"+EMpname[i]+"' ,'"+ts+"','"+ts+"')");
tx.commit();
这可确保成功执行所有语句或不执行任何语句(回滚)。 我还会考虑使用参数化查询来避免SQL注入:https://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java#Prepared_Statements