您的位置:首页 > 数据库 > SQL

利用SqlBulkCopy一次性把Table数据插入到数据库

2011-03-31 14:26 513 查看
/// <summary>
/// 建立缓存表
/// </summary>
/// <returns></returns>
#region 建立缓存表
public static DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[]{
new DataColumn("usrName",typeof(string))
});
return dt;
}
#endregion
/// <summary>
/// 将文本文件的数据缓存到表中
/// </summary>
/// <param name="filename">文件名</param>
/// <returns></returns>
#region  缓存文本文件的数据
public DataTable inertDataToDt(string filename)
{
System.IO.StreamReader objReader = new StreamReader(fileName, Encoding.GetEncoding("GB2312"));
string sLine = "";
string usrName= "";
DataTable dt = GetDataTable();
while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null)
{
sLine = sLine.Replace("/t", ",");
string[] sArray = sLine.Split(',');
if (sArray.Length == 9)
{
usrName = sArray[0];
DataRow r = dt.NewRow();
r[0] = usrName;
dt.Rows.Add(r);
}
}
}
objReader.Close();
return dt;
}
#endregion
///<summary>
///利用SqlBulkCopy一次性把Table数据插入到数据库
///</summary>
///<param name="dt"></param>
/// <returns></returns>
#region 批量插入数据

public static void BulkToDB(DataTable dt)
{
SqlConnection sqlConn = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
bulkCopy.DestinationTableName = "tableName"; //要插入表的表名
bulkCopy.BatchSize = dt.Rows.Count;
try
{
sqlConn.Open();
if (dt != null && dt.Rows.Count != 0)
{
bulkCopy.WriteToServer(dt);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
if (bulkCopy != null)
{
bulkCopy.Close();
}
}
}
#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: