<!-- 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