使用类System.Data.SqlClient.SqlBulkCopy,如下面的例子,临时表的结构从DataTable建立。
{
DataFunctions.DelTemporyTable(dbcon, "#tmpLTKP");
sbSql.Append("CREATE TABLE #tmpLTKP(");
for (int i = 0; i < dt.Columns.Count - 1; i++)
{
sbSql.Append("\r" + dt.Columns[i].ColumnName.Trim() + " VARCHAR(100) NULL, ");
}
sbSql.Append("\r" + dt.Columns[dt.Columns.Count - 1].ColumnName.Trim() + " VARCHAR(100) NULL) ");
dbcon.ExecuteSql(sbSql.ToString());
sbc.BatchSize = 10000; //一次更新的行数
sbc.BulkCopyTimeout = 60; //操作超时的时间
sbc.DestinationTableName = "#tmpLTKP"; //目标表
for (int i = 0; i < dt.Columns.Count; i++)
sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); //添加源和目标表之间的列映射。
try
{
sbc.WriteToServer(dt); //写入目标表的方法
DataFunctions.DataBrow(dbcon.GetDataTable("SELECT * FROM #tmpLTKP").DefaultView );
}
catch (Exception ex)
{
MsgBoxEx.Show(ex.Message);
}
finally
{
dbcon.CloseCon();
}
}