您的位置:首页 > 其它

快速批量数据插入

2013-01-10 13:46 169 查看
/// <summary>
/// 用datatabel来批量插入数据
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="dt">datatabel对象</param>
/// <returns></returns>
public bool ExecuteInsertCommand(Dictionary<string, DataTable> dic)
{
bool flag = false;
using (SqlConnection conn = new SqlConnection(sqlHelper.SQLConString))
{
SqlTransaction transaction = null;
try
{
conn.Open();
transaction = conn.BeginTransaction();
foreach (DataTable dicItem in dic.Values)
{
SqlBulkCopy sbc = new SqlBulkCopy(sqlHelper.SQLConString);
//服务器上目标表的名称
sbc.DestinationTableName = dicItem.TableName;
sbc.BatchSize = dicItem.Rows.Count;
sbc.BulkCopyTimeout = 180;
sbc.WriteToServer(dicItem);
}
flag = true;
transaction.Commit();
}
catch (Exception ex)
{
flag = false;
string errMsg = ex.Message;
transaction.Rollback();
}

}

return flag;
}


之前遇到一个异常:从bcp客户端收到一个对Colid 24 无效的列长度
原因:第24列的参数长度大于数据库列定义长度

构造的DataTable的列顺序要和数据的顺序一样

构造DataTable时字段的顺序一定要和数据库中的顺序对应(不知道是不是,反正我这样做了就行了)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: