WPF 数据批量插入

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32;


namespace SqlBulkCopy批量数据插入
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string conStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "文本文件|*.txt";
            if (ofd.ShowDialog() == false)
            {
                return;
            }
            string[] lines = 
                File.ReadAllLines(ofd.FileName, Encoding.Default).ToArray();
            DateTime startTime = DateTime.Now;//这就是任务开始执行的时间

           // 这个方法可以快速插入,代替下面一块的的

            SqlBulkCopy bulkconpy = new SqlBulkCopy(connStr); //SqlBulkCopy数据大块的复制拷贝 connStrt通过这个链接来访问数据库
           
            
            
//            //totalCount = lines.Length;

//            //数据库连接池:ADO.NET会尽可能的复用连接池中的连接。
//            //这作用是关闭数据库,并不是真的关闭的是微软帮你隐藏了,很长时间不用就把你释放了
//            using (SqlConnection conn = new SqlConnection(connStr))
//            {
//                conn.Open();
//                //注意文件T里是按照制表符分割的,不是字符串
//                //foreach (string lien in lines)
//                for (int i = 0; i < lines.Length;i++ )
//                {
//                    string line = lines[i];

//                    string[] strs = lines.Split('\t');//vs里'\t'为制表符
//                    string startTelNum = strs[0];
//                    string city = strs[1];
//                    city = city.Trim('"');//去掉两边的双引号:"北京市"
//                    string telType = strs[2];
//                    telType = telType.Trim('"');

//                    //数据库连接池
//                    using (SqlCommand cmd = conn.GreateCommand())
//                    {
//                        //遍历
//                        //就这句办事效率低了些 ,有一种可以快速插入,叫批量提交
//                        cmd.CommandText = @"insert into T_TelNum (StartTelNum,TelType,TelArea) 
//                                   values(@StartTelNum,@TelType,@TelArea)";//@是可以控制多行的
//                        cmd.Parameters.Add(new SqlParameter("@StartTelNum", startTelNum));
//                        cmd.Parameters.Add(new SqlParameter("@TelType", telType));
//                        cmd.Parameters.Add(new SqlParameter("@TelArea", city));
//                        //插入
//                        cmd.ExecuteNonQuery();

//                    }
//                    TimeSpan ts = DateTime.Now - startTime;//两个时间相减 TimeSpan类型时间段的意思,
//                    //ts.TotalSeconds//时间段代码的总秒数  TimeSpan的属性
//                    double ellapsedSec = ts.TotalSeconds;//ellapsedSec已经耗用的秒数


//                    //扬中科那个数据库里一共十几万条数据 ,测出来的时间是24分钟所以怎么办;
//                    //一般在计算机里现乘以后除更精确些
//                    //double totalSec = (ellapsedSec / (i + 1)) * lines.Length;//(ellapsedSec/(i+1))每条大约用了多少秒,* lines.Length乘以总条数
//                    //所以
//                    double totalSec = ellapsedSec * lines.Length / (i + 1);//估计需要的总秒数
//                }
//            }


        }

        public string connStr { get; set; }
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name ="connStr" connectionString="Data Source=PC-20121201BQFG\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"/>
  </connectionStrings>
  
    <!--<startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>-->
</configuration>

 

转载于:https://www.cnblogs.com/ruishuang208/archive/2013/05/26/3100318.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值