Joh*_*nyy 2 c# t-sql sql-server sql-server-2005
我有一组需要插入SQL Server 2005表的对象(存储在链表中).
这个解决方案非常慢.我有大约10K的记录要插入.每隔一段时间我就会暂停,只看到更多的执行完成.
任何人都可以帮助改善这个吗?
using (SqlConnection dbConnection = new SqlConnection(connectionString))
{
dbConnection.Open();
SqlTransaction dbTrans = dbConnection.BeginTransaction();
SqlCommand cmd = dbConnection.CreateCommand();
cmd.Transaction = dbTrans;
foreach (MyRecord myr in Records)
{
cmd.CommandText = buildInsertionString(MyRecord)
cmd.ExecuteNonQuery();
}
dbTrans.Commit();
dbConnection.Close();
}
public string buildinsertionString(Myrecod myr){
string sqlCommandString = "insert into Table1 values";
string values = "'" + myr.field1 + "',"
+ myr.field2 + ","
+ "'" + myr.field3 + "',"
+ "'" + myr.field4 + "',"
+ "'" + myr.field5 + "',"
+ "'" + myr.field6 + "'";
return sqlCommandString + "(" + values + ");
}
Run Code Online (Sandbox Code Playgroud)
使用SQLBulkCopy(System.Data.SqlClient):
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "table";
bulkCopy.WriteToServer(Records);
}
}
Run Code Online (Sandbox Code Playgroud)
生成的SQL使用BULK INSERTSQL Server 2005及更高版本中提供的命令和功能.
注意:Records必须是类型的DataRow,DataTable或使用IDataReader.
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |