首页 新闻 会员 周边

这样操作数据库会对数据库造成负担吗?

0
[已解决问题] 解决于 2015-07-27 23:52
 1 public int Insert(DataTable dt)
 2         {
 3             int flag = 0;
 4             StringBuilder sb;
 5             SqlCommandBase cmd;
 6             try
 7             {                
 8                   if (dt.Rows.Count>0)
 9                   {
10                       for (int i = 0; i < dt.Rows.Count; i++)
11                       {
12 
13                           sb = new StringBuilder();
14                           sb.Append("INSERT INTO sys_UserOperatingAutyRe");
15                           sb.Append(" ([Guid],[UserId],[GroupId],[OperatingAutyId])");
16                           sb.Append("VALUES (@Guid,@UserId,@GroupId,@OperatingAutyId)");
17                           cmd = SqlBuilder.BuildSqlCommandBase(sb.ToString());
18                           cmd.AddParam("@Guid", SqlDbType.VarChar, dt.Rows[i]["Guid"]);
19                           cmd.AddParam("@UserId", SqlDbType.VarChar, dt.Rows[i]["UserId"]);
20                           cmd.AddParam("@GroupId", SqlDbType.VarChar, dt.Rows[i]["GroupId"]);
21                           cmd.AddParam("@OperatingAutyId", SqlDbType.VarChar, dt.Rows[i]["OperatingAutyId"]);
22                           flag = DataProvider.Instance.ExecuteNoQuery(_Loginer.DBName, cmd.SqlCommand);
23                       }               
24                   }                             
25                 return flag;
26             }
27             catch (Exception ex)
28             {
29 
30                 return 0;
31             }
32         }
View Code

这样循环一条插一条是不是不好啊?如果不好怎么改进?

zhenghui100的主页 zhenghui100 | 初学一级 | 园豆:183
提问于:2015-07-07 19:14
< >
分享
最佳答案
1

一条一条肯定要慢了。可以用SqlBulkCopy来实现批量Insert数据,MSDN示例

也还有其他解决方案,搜搜“Ado.Net   批量数据插入”。

奖励园豆:5
liqipeng | 小虾三级 |园豆:1160 | 2015-07-07 19:35
其他回答(1)
0

楼上也说了,

使用SQLSERVER 或ORACLE 提供的BulkCopy功能,执行批量插入。

宝宝,爸爸爱你 | 园豆:57 (初学一级) | 2015-07-08 15:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册