在开发中对于数据的操作经常有可能一次向数据库插入多条记录。
对于才入门的程序员来说,第一感觉就是写个循环,先把sql写好每次循环的时候都传入不同的参数即可。
向用户表中一次插入多个用户。
String[] users={"张三","李四","王老五"};
String sql="insert into user (name)values(?)";
PreparedStatement ps=conn.prepareStatement(sql);
for (String string : users) {
ps.setString(1, string);
ps.executeUpdate();
}
这种做法肯定也是能满足需求的,但是从性能上讲就不是那么好了。这样你要插入多少用户就需要向数据库发送多少次请求。
在真正的应用中我们不会像这样做。
如果插入数据的来源是有系统输入的那么我们可以这样:
insert into user (name) values ('张三'),('李四'),('王老五');
insert into user (name) select '张三' union all select '李四' union all '王老五';
上边两种方式在mysql中是可行的,在oracle中需要这样
insert into user (name) select '张三' from dual union all select '李四' from dual union all '王老五' from dual;
这样的性能绝定比上边第一种好好的多吧!
当插入数据的来源就在数据库中,我们可以这样
insert into user (name,sex,age) select name,sex,age from user1;
这里需要注意的是:
select 查询字段的位置顺序一定要和into表中字段位置顺序对应一致。他不会根据你的名称来对应,他是根据位置顺序来对应的。
还望多多指点