wzp
2021-07-30 afda40ef498cca59e58b2b6869deae90f3c13de5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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);
        //}
 
        /**/
        /// <summary>
        /// SqlBulkCopy
        /// </summary>
        /// <param name="connectionString">目标连接字符</param>
        /// <param name="TableName">目标表</param>
        /// <param name="dt">源数据</param>
        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;
                    }
                }
            }
        }
    }
}