sqlhelper(带sqlbulkcopy批量插入)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DataController
{
    static class SqlHelper
    {
        const int SQLTimeout = 120;
        const string Connection = "SERVER=127.0.0.1;USER ID=sa;PWD=password;DATABASE=database;CONNECT TIMEOUT=120;";
        /// <summary>
        /// 批量插入数据
        /// </summary>
        /// <param name="dt">要写入的datatable</param>
        /// <param name="tablename">要插入数据库的表名</param>

   /// <param name="columnnames">要插入数据库的列名</param>
        public static void SqlBulkCopyInsert(DataTable dt, string tablename,List<string> columnnames)
        {
            using (SqlConnection conn = new SqlConnection(Connection))
            {
                conn.Open();
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
                {
                    bulkCopy.DestinationTableName = tablename;
                    foreach (string str in columnnames)
                    {
                        bulkCopy.ColumnMappings.Add(str, str);
                    }
                    bulkCopy.WriteToServer(dt);
                }
            }
        }

public static DataTable SelectInfo(string sql)
        {
            DataSet ds = new DataSet();
            using (SqlConnection conn = new SqlConnection(Connection))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandTimeout = SQLTimeout;
                    using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                    {
                       
                        sda.Fill(ds);
                    }
                }
            }
            return ds.Tables[0];
        }
        public static int AddDelUpdate(string sql)
        {
            using (SqlConnection conn = new SqlConnection(Connection))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandTimeout = SQLTimeout;
                    return cmd.ExecuteNonQuery();
                }
            }
            return 0;
        }
        public static object ExecuteScalar(string sql)
        {
            using (SqlConnection conn = new SqlConnection(Connection))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandTimeout = SQLTimeout; 
                    return cmd.ExecuteScalar();
                }
            }
        }

   /// <summary>
        /// 通过表名获得所有列名

/// </summary>

/// <param name="tablename">要插入数据库的表名</param>

public static List<string> GetTableColumnNames(string tablename)
        {

string sql = "select name from syscolumns where id=(select max(id) from sysobjects where xtype=‘u‘ and name=‘" + tablename + "‘)";
            DataTable dt = SelectInfo(sql);
            List<string> columnNames = new List<string>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                columnNames.Add(dt.Rows[i][0].ToString());
            }
            return columnNames;
        }
    }
}

时间: 2025-01-01 21:11:34

sqlhelper(带sqlbulkcopy批量插入)的相关文章

ADO.NET 新特性之SqlBulkCopy(批量插入大量数据)

转自:http://blog.csdn.net/huaer1011/article/details/2312361 在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便.而在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们通过DataTable或DataReader批量迁移数据.数据源可以来自关系数据库或者XML文件,甚至WebService返回结果.其中最重要的一个类就是SqlBulkCopy类,使用它

C#中的SqlBulkCopy批量插入数据

在C#中,我们可以使用sqlBulkCopy去批量插入数据,其他批量插入方法不在讨论. 1 /// <summary> 2 /// SqlBulkCopy批量插入数据 3 /// </summary> 4 /// <param name="connectionStr">链接字符串</param> 5 /// <param name="dataTableName">表名</param> 6 ///

SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法

原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints using (SqlBulkCopy bulkCopy = new SqlBulkCopy(GlobalString.ConnectionString, SqlBulkCopy

用SqlBulkCopy批量插入数据到SqlServer数据库表中

首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace insetData { public class SQLHelper { public static readonly string Strconn = "Data

.net 使用SqlBulkCopy批量插入数据库

//一次批量插入100W条数据到数据库 static void Main(string[] args) { System.Random a = new Random(System.DateTime.Now.Millisecond); Stopwatch sw = new Stopwatch(); DataTable dt = GetTableSchema(); for (int count = 0; count < 1000000; count++) { DataRow r = dt.NewRo

ASP.Net 使用SqlBulkCopy批量插入

批量插入,以前我的做法是生成一堆insert into的sql语句,然后用程序一次值行,来实现. 今天看到了ASP.Net里可以使用DataTable,先将数据写入到DataTable中,然后使用SqlBulkCopy方法,给他传递一个DataTable类型,他自动会实现批量插入. 速度极快. 做法备注一下在这里,以便日后查阅 protected void Button1_Click(object sender, EventArgs e) { //准备要批量插入的数据 DataTable tab

使用SqlBulkCopy批量插入多条数据进入表中

由于工作中项目需求结算一次生成一批相同批次号的数据插入一个表中,然后再通过另一页面展示出来,所以需要用到一次性插入一批数据,所以就采用了SqlBulkCopy插入一批数据 1 public static int InsertSettlementRecord(SqlConnection connection, List<InventorySettlement> model) 2 { 3 DataTable dt = GetTableSchema(); 4 SqlBulkCopy bulkCopy

mysql三种带事务批量插入

前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到数据库,如果循环打扰我数据库,数据库也会觉得很累,从而增加数据库服务器压力.所以小子不才,根据平时经验总结了一下用到的批量插入的方法代码.本文是针对c#语言开发,数据库是mysql数据库.当然我这是单片机的本地电脑运行,跟服务器上有很大区别,到了服务器上可能跑的比这快的多,话不多说看下文. 一 生成数据 简而言之吧,就拿五万数据实验吧,这里面我就收集了五万条数据 二 批

使用事务和SqlBulkCopy批量插入数据

SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能.类似与 Microsoft SQL Server 包中名为 bcp 的命令行应用程序.但是使用 SqlBulkCopy 类可以编写托管代码解决方案,性能上优于bcp命令行应用程序,更优于如Insert方式向SQL Server表加载大量数据.SqlBulkCopy可以应用到大批量数据的转移上,而不