一次插入多条记录的SQL语句介绍

分类:数据库| 发布:camnprbubuol| 查看: | 发表时间:2011/1/24
有些数据库支持批量Sql,但是不建议这么做
实际上你在一个Open的数据库连接上连续执行8条Sql,效率不会多低,加上一个事务就好了,如:
SqlConnection con = new SqlConnection(constr);
con.Open();
// 使用事务,8条Sql要么都执行成功,要么都执行失败
SqlTransaction tran = con.BeginTransaction();
try{
SqlCommand com = con.CreateCommand();
com.Transaction = tran;
com.CommandText = "insert....";
com.ExecuteNonQuery();
com.CommandText = "insert....";
com.ExecuteNonQuery();
com.CommandText = "insert....";
com.ExecuteNonQuery();

tran.Commit();
}catch(Exception){
tran.Rollback();
}finally{
if (con.State != ConnectionState.Closed)
con.Close();
}
 
 

在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下:

--添加一条记录   
INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)   
--添加多条记录   
INSERT INTO tableName(col1,col2,col3)   
SELECT 3,4,5   
UNION ALL  
SELECT 6,7,8   


--从另外的一张表中读取多条数据添加到新表中   
INSERT INTO tableName(col1,col2,col3)    
SELECT a,b,c FROM tableA   


--从其他的多张表中读取数据添加到新表中   
INSERT INTO tableName(col1,col2,col3)   
SELECT a,b,c FROM tableA WHERE a=1   
UNION ALL  
SELECT a,b,c FROM tableB WHERE a=2  


上边代码中的into都可以省略!

上边代码中的union all如果换成union,则相同记录只插入一次,不会重复插入。

另外一种方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了。  

INSERT INTO MyTable(ID,NAME)VALUES(7,’003’),(8,’004’),(9,’005’)

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/archives/191.html