2010-08-11 137 views
0

我有DataTable在SqlServer数据库表中具有相同的结构。 要保存的数据在此数据表到SQL数据库我用下面的代码:DataTable最佳保存到sql数据库

sqlCommand mcd; 

for(int i=0;i<dataTable.Rows.Count;i++) 
{ 
mcd=new SqlCommand(); 
cmd.CommandText="Insert into MSSQLtable values("+dataTable.Rows[i][0]+dataTable.Rows[i][1]+")"; 
cmd.ExecuteNonQuery(); 

} 

如何与另一种方式我插入数据?

回答

1

还有其他一些方法,请查看关于从.NET高性能批量加载到SQL Server的博文I wrote here。总之,您可以使用SqlDataAdapter执行批量插入(或更新),或者为了获得更好的性能,可以使用SQLBulkCopy(仅限插入)。 SqlDataAdapter方法演示了在数据库中插入100,000条记录需要花费大约25秒,而SqlBulkCopy则需要大约0.8秒。

每种方法都有优点/缺点 - 例如,如果您想要很好地处理错误并在发生特定行出错时继续使用,那么SqlDataAdapter非常方便。

+0

是否可以初始化来自不同数据库的数据(例如,Oracle,VisualFoxPro),然后使用SqlBulkCopy方法保存到Sql Server? – loviji 2010-08-11 10:27:38

+1

@loviji - 是的。您只需将来自其他源的数据加载到可以传递给SqlBulkCopy的数据中(例如,可以是数组或DataRows,DataTable,实现IDataReader的任何内容)。 – AdaTheDev 2010-08-11 10:40:22