using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary.Data;
namespace ThreadTestSMGW
{
public class DataSql
{
//Database da = DatabaseFactory.CreateDatabase("ConnectionString");
////插入数据
//public int InsertSql(string starttime,string endtime)
//{
// string sql = @"insert into tb_jzcs(creattime,updatetime) values(@createtime,@updatetime) ;select @@IDENTITY;";
// System.Data.SqlClient.SqlCommand cmd = new SqlCommand();
// cmd.Parameters.Add(new SqlParameter() { ParameterName = "@createtime", Value = starttime });
// cmd.Parameters.Add(new SqlParameter() { ParameterName="@updatetime",Value=endtime});
// cmd.CommandText = sql;
// cmd.CommandType = CommandType.Text;
// cmd.CommandTimeout = 1000000000;
// object ret=da.ExecuteScalar(cmd);
// return Convert.ToInt32(ret);
//}
//public void UpdateSql(string time,int id)
//{
// string sql = @"update tb_jzcs set updatetime=@updatetime where id=@id";
// System.Data.SqlClient.SqlCommand cmd = new SqlCommand();
// cmd.Parameters.Add(new SqlParameter() { ParameterName = "@updatetime", Value = time });
// cmd.Parameters.Add(new SqlParameter() { ParameterName="@id",Value=id});
// cmd.CommandText = sql;
// cmd.CommandType = CommandType.Text;
// cmd.CommandTimeout = 1000000000;
// da.ExecuteNonQuery(cmd);
//}
/**/
///
/// SqlBulkCopy
///
/// 目标连接字符
/// 目标表
/// 源数据
public void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
//生成SqlBulkCopy 实例,构造函数指定了目标数据库,使用SqlBulkCopyOptions.UseInternalTransaction是指迁移动作指定在一个Transaction当中,如果数据迁移中产生错误或异常将发生回滚。
using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
{
try
{
sqlbulkcopy.BulkCopyTimeout = 5000;//指定操作完成的Timeout时间
sqlbulkcopy.DestinationTableName = TableName;
for (int i = 0; i < dt.Columns.Count; i++)
{
sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
sqlbulkcopy.WriteToServer(dt);//WriteToServer方法就是将数据源拷备到目标数据库。在使用WriteToServer方法之前必须先指定 DestinationTableName属性,也就是目标数据库的表名
}
catch (System.Exception ex)
{
throw ex;
}
}
}
}
}
}