zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Windows10内置Linux子系统安装及C++编程环境配置
    在iOS平台上使用gtest进行单元测试
    【转载】Android7.0以前和7.0以后开启闪光灯的方式
    C++11 move记录
    决策树
    生成MTLLibrary
    【转载】3D显示技术
    vector::insert和std::copy
    Visual Studio 2017 + CMake + CUDA
    词嵌入向量WordEmbedding
  • 原文地址:https://www.cnblogs.com/ruishuang208/p/3100318.html
Copyright © 2011-2022 走看看