如何编写单个查询来插入数据

时间:2012-02-09 08:50:53

标签: sql sql-server

我尝试在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中...请帮助编写此查询。

4 个答案:

答案 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。如果您的服务器版本较低,请使用UNIONhttp://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