ADO.NET基礎學習SqlBulkCopy

<!-- lang: c# -->
using System;

using System.Collections.Generic; using System.Linq; using System.Text; 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 System.Configuration; using Microsoft.Win32; using System.IO; using System.Data.SqlClient; using System.Data;數據庫

namespace 手機號碼導入查詢 { /// <summary> /// MainWindow.xaml 的交互邏輯 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); }c#

private void Import_btn_Click(object sender, RoutedEventArgs e)
    {
        string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
        //MessageBox.Show(connStr);

        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "文件文件|*.txt";
        if (ofd.ShowDialog() != true)
        {
            return;
        }
        //大數據插入

        DateTime startTime = DateTime.Now;

        string[] lines = File.ReadLines(ofd.FileName, Encoding.Default).ToArray();

        DataTable table = new DataTable();
        table.Columns.Add("StartTelNum");   //建立本地表的列
        table.Columns.Add("Num_Area");
        table.Columns.Add("Num_Type");
        table.Columns.Add("Num_Code");

        for (int i = 1; i < lines.Count(); i++)
        {
            string line = lines[i];
            string[] strs = line.Split('\t'); ;
            string startTelNum = strs[0];  //開始號碼
            string city = strs[1];   //城市
            city = city.Trim('"'); //去掉兩邊的雙引號:"北京市"
            string telType = strs[2];  //號碼類型
            telType = telType.Trim('"');
            string code_num = strs[3];  //區號
            code_num = code_num.Trim('"');

            DataRow row = table.NewRow();   //建立一個DataRow對象
            row["StartTelNum"] = startTelNum;  //給列賦值  必定要在一開始建立table.Clumns添加列
            row["Num_Area"] = city;
            row["Num_Type"] = telType;
            row["Num_Code"] = code_num;
            table.Rows.Add(row);  //插入DataRow對象
            
        }
         
        
        
        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr))  //爆發bulkCopy
        {
            bulkCopy.DestinationTableName = "T_TelNum";  //把這個對象copy到T_TelNum這個表
            bulkCopy.ColumnMappings.Add("StartTelNum","StartTelNum");  //DataTable row字段和數據庫中的對應關係
            bulkCopy.ColumnMappings.Add("Num_Area","Num_Area");
            bulkCopy.ColumnMappings.Add("Num_Type","Num_Type");
            bulkCopy.ColumnMappings.Add("Num_Code","Num_Code");
            //添加DataTable中列名和數據庫表彙總列名的映射
            bulkCopy.WriteToServer(table);  //寫入到數表中
            
        }
        TimeSpan ts = DateTime.Now - startTime;
        MessageBox.Show("總共用了:"+ts.ToString());
       
        



        //傳統插入方法

        //DateTime startTime = DateTime.Now;

        ////跳過第一行表頭
        //for (int i = 1; i < lines.Count(); i++)
        //{
        //    string line = lines[i];
        //    string[] strs = line.Split('\t'); ;
        //    string startTelNum = strs[0];  //開始號碼
        //    string city = strs[1];   //城市
        //    city = city.Trim('"'); //去掉兩邊的雙引號:"北京市"
        //    string telType = strs[2];  //號碼類型
        //    telType = telType.Trim('"');
        //    string code_num = strs[3];  //區號
        //    code_num = code_num.Trim('"');

        //    //SqlHelper.ExecuteNonQuery("insert into T_TelNum (StartTelNum,Num_Area,Num_Type,Num_Code) values('1300000','北京市','聯通',010)");

        //    //插入到數據庫

        //    //數據庫鏈接池:ADO.net會盡量的複用鏈接池中的鏈接

        //    SqlHelper.ExecuteNonQuery(@"insert into T_TelNum (StartTelNum,Num_Area,Num_Type,Num_Code) values(@StartTelNum,@Num_Area,@Num_Type,@Num_Code)",
        //        new SqlParameter("@StartTelNum",startTelNum),
        //        new SqlParameter("@Num_Area",city),
        //        new SqlParameter("@Num_Type",telType),
        //        new SqlParameter("@Num_Code",code_num));

        //    TimeSpan ts = DateTime.Now - startTime;  //DateTime 相減獲得TimeSpan類型
        //    double ellapsedSec = ts.TotalSeconds;   //已經耗用的秒數
        //   // double totalSec = (ellapsedSec / (i + 1)) * lines.Length;  //先乘後除精確
        //    double totalSec = ellapsedSec * lines.Length /(i+1) /60;  //估計須要的時間

        //    MessageBox.Show("大概須要"+totalSec.ToString());


        //}

        

        MessageBox.Show("導入完成!");

    }
}

}app

相關文章
相關標籤/搜索