zoukankan      html  css  js  c++  java
  • 关于Excel数据批量导入数据库的案例

        写这个案例主要是感觉这个功能挺实用,很多地方会用得到的,废话就不多说了,直接上对应的源码。

        这个案例我运用的是Winform窗体程序实现数据的导入。

        首先是数据库的登陆界面如下:

    源码如下:

      1 using System;
      2 using System.Data.SqlClient;
      3 using System.Windows.Forms;
      4 
      5 namespace Winform_SqlBulkCopy
      6 {
      7     public partial class Frm_SetServer : Form
      8     {
      9         #region 全局变量
     10         /// <summary>
     11         /// 数据库连接字符串
     12         /// </summary>
     13         string sqlconnstr;
     14         #endregion
     15 
     16         #region 构造函数
     17         /// <summary>
     18         /// 构造函数
     19         /// </summary>
     20         public Frm_SetServer()
     21         {
     22             InitializeComponent();
     23             Load += new EventHandler(SetServer_Load);
     24         }
     25         #endregion
     26 
     27         #region 窗体加载
     28         /// <summary>
     29         /// 窗体加载
     30         /// </summary>
     31         /// <param name="sender"></param>
     32         /// <param name="e"></param>
     33         void SetServer_Load(object sender, EventArgs e)
     34         {
     35             Init();
     36             Evenhand();
     37         }
     38         #endregion
     39 
     40         #region 初始化
     41         /// <summary>
     42         /// 初始化
     43         /// </summary>
     44         void Init()
     45         {
     46             AcceptButton = bt_Conn_Test;
     47             MaximizeBox = false;
     48             MaximumSize = MinimumSize = Size;
     49         }
     50         #endregion
     51 
     52         #region 事件源绑定
     53         /// <summary>
     54         /// 事件源绑定
     55         /// </summary>
     56         void Evenhand()
     57         {
     58             //单选按钮
     59             rd_SqlServer.Click += new EventHandler(rd_Click);
     60             rd_Windows.Click += new EventHandler(rd_Click);
     61             //按钮
     62             bt_Conn_Test.Click += new EventHandler(bt_Click);
     63             bt_Login.Click += new EventHandler(bt_Click);
     64         }
     65         #endregion
     66 
     67         #region 控件事件
     68 
     69         #region 选中单选按钮
     70         /// <summary>
     71         /// 选中单选按钮
     72         /// </summary>
     73         /// <param name="sender"></param>
     74         /// <param name="e"></param>
     75         void rd_Click(object sender, EventArgs e)
     76         {
     77             switch ((sender as RadioButton).Name)
     78             {
     79                 case "rd_Windows":
     80                     lb_Uid.Enabled = false;
     81                     lb_Pwd.Enabled = false;
     82                     txt_Uid.Enabled = false;
     83                     txt_Pwd.Enabled = false;
     84                     break;
     85                 case "rd_SqlServer":
     86                     lb_Uid.Enabled = true;
     87                     lb_Pwd.Enabled = true;
     88                     txt_Uid.Enabled = true;
     89                     txt_Pwd.Enabled = true;
     90                     break;
     91                 default:
     92                     break;
     93             }
     94         }
     95         #endregion
     96 
     97         #region 单击按钮
     98         /// <summary>
     99         /// 单击按钮
    100         /// </summary>
    101         /// <param name="sender"></param>
    102         /// <param name="e"></param>
    103         void bt_Click(object sender, EventArgs e)
    104         {
    105             if (txt_Server.Text.Trim().Length == 0)
    106             { MessageBox.Show("ServerName Is Null ."); return; }
    107             if (rd_SqlServer.Checked)
    108             {
    109                 if (txt_Uid.Text.Trim().Length == 0)
    110                 { MessageBox.Show("Uid Is Null ."); return; }
    111                 if (txt_Pwd.Text.Trim().Length == 0)
    112                 { MessageBox.Show("Pwd Is Null ."); return; }
    113             }
    114             switch ((sender as Button).Name)
    115             {
    116                 case "bt_Conn_Test"://测试连接
    117                     bt_Login.Enabled = false;
    118                     if (rd_SqlServer.Checked)//sqlserver登陆
    119                     {
    120                         using (SqlConnection conn = new SqlConnection(string.Format(@"server={0};database=master;uid={1};pwd={2}",
    121                             txt_Server.Text.Trim(), txt_Uid.Text.Trim(), txt_Pwd.Text.Trim())))
    122                         {
    123                             try
    124                             { sqlconnstr = conn.ConnectionString; conn.Open(); bt_Login.Enabled = true; AcceptButton = bt_Login; }
    125                             catch
    126                             { MessageBox.Show("服务器连接失败!"); }
    127                         }
    128                     }
    129                     else//windows身份验证过
    130                     {
    131                         using (SqlConnection conn = new SqlConnection(string.Format(@"Data Source={0};database = master;Integrated security = true", txt_Server.Text.Trim())))
    132                         {
    133                             try
    134                             { sqlconnstr = conn.ConnectionString; conn.Open(); bt_Login.Enabled = true; AcceptButton = bt_Login; }
    135                             catch
    136                             { MessageBox.Show("服务器连接失败!"); }
    137                         }
    138                     }
    139                     break;
    140                 case "bt_Login"://登陆
    141                     Frm_ReadExcel show = new Frm_ReadExcel(sqlconnstr);
    142                     show.Show();
    143                     Hide();
    144                     break;
    145                 default:
    146                     break;
    147             }
    148         }
    149         #endregion
    150 
    151         #endregion
    152 
    153         
    154     }
    155 }

    登录后进入导入界面如下:

    实现的源代码如下:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Data;
      4 using System.Data.OleDb;
      5 using System.Data.SqlClient;
      6 using System.Windows.Forms;
      7 
      8 namespace Winform_SqlBulkCopy
      9 {
     10     public partial class Frm_ReadExcel : Form
     11     {
     12         #region 全局变量
     13         DataSet ds;
     14         string[] tablenames;
     15         SqlConnection conn;
     16         string connstr;
     17         List<SqlBulkCopyColumnMapping> SqlBulkCopyparameters;
     18         #endregion
     19 
     20         #region 构造函数
     21         /// <summary>
     22         /// 构造函数
     23         /// </summary>
     24         /// <param name="_connstr">sqlserver连接字符串</param>
     25         public Frm_ReadExcel(string _connstr)
     26         {
     27             connstr = _connstr;
     28             InitializeComponent();
     29             Load += new EventHandler(Frm_ReadExcel_Load);
     30         }
     31         #endregion
     32 
     33         #region 窗体加载
     34         void Frm_ReadExcel_Load(object sender, EventArgs e)
     35         {
     36             Init();
     37             EventHand();
     38         }
     39         #endregion
     40 
     41         #region 初始化
     42         void Init()
     43         {
     44             conn = new SqlConnection(connstr);//SqlConnection实例化
     45             MaximizeBox = false;//禁用最小化
     46             MaximumSize = MinimumSize = Size;//固定当前大小
     47             txt_filepath.ReadOnly = true;
     48             com_databasename.DropDownStyle = com_tablename.DropDownStyle = ComboBoxStyle.DropDownList;//下拉框只可选
     49             try
     50             {
     51                 conn.Open();
     52                 using (SqlCommand cmd = conn.CreateCommand())
     53                 {
     54                     cmd.CommandText = @"select name from sysdatabases";
     55                     SqlDataReader reader = cmd.ExecuteReader();//获取所有数据库
     56                     while (reader.Read()) com_databasename.Items.Add(reader[0].ToString());
     57                     if (com_databasename.Items.Count > 0) com_databasename.SelectedIndex = 0;
     58                 }
     59             }
     60             catch (Exception ex)
     61             { MessageBox.Show(ex.Message); }
     62             finally
     63             { conn.Close(); }
     64         }
     65         #endregion
     66 
     67         #region 控件事件挂接
     68         void EventHand()
     69         {
     70             com_databasename.SelectedIndexChanged += new EventHandler(com_databasename_SelectedIndexChanged);
     71             bt_see.Click += new EventHandler(bt_see_Click);
     72             bt_next.Click += new EventHandler(btn_next_Click);
     73             bt_SetColumns.Click += new EventHandler(bt_SetColumns_Click);
     74             bt_ok.Click += new EventHandler(bt_ok_Click);
     75             bt_instruction.Click += new EventHandler(bt_instruction_Click);
     76             dgv_show.DataError += new DataGridViewDataErrorEventHandler(dgv_show_DataError);
     77             FormClosing += new FormClosingEventHandler(Frm_ReadExcel_FormClosing);
     78         }
     79         #endregion
     80 
     81         #region 控件事件响应
     82         #region 修改数据库
     83         /// <summary>
     84         /// 修改数据库
     85         /// </summary>
     86         /// <param name="sender"></param>
     87         /// <param name="e"></param>
     88         void com_databasename_SelectedIndexChanged(object sender, EventArgs e)
     89         {
     90             try
     91             {
     92                 conn.Open();
     93                 conn.ChangeDatabase(com_databasename.Text.Trim());//更换数据库(connection内置方法)
     94                 using (SqlCommand cmd = conn.CreateCommand())
     95                 {
     96                     cmd.CommandText = @"select name from sysobjects where xtype='u'";
     97                     SqlDataReader reader = cmd.ExecuteReader();//获取所选数据库中的所有表
     98                     com_tablename.Items.Clear();
     99                     while (reader.Read()) com_tablename.Items.Add(reader[0].ToString());
    100                     if (com_tablename.Items.Count > 0) com_tablename.SelectedIndex = 0;
    101                 }
    102             }
    103             catch (Exception ex)
    104             {
    105                 MessageBox.Show(ex.Message);
    106             }
    107             finally
    108             {
    109                 conn.Close();
    110             }
    111         }
    112         #endregion
    113 
    114         #region 选择Excel文件
    115         /// <summary>
    116         /// 选择Excel文件
    117         /// </summary>
    118         /// <param name="sender"></param>
    119         /// <param name="e"></param>
    120         void bt_see_Click(object sender, EventArgs e)
    121         {
    122             try
    123             {
    124                 OpenFileDialog open = new OpenFileDialog();
    125                 open.Filter = "WPS表格(*.et)|*.et|Excel2007(*.xlsx)|*.xlsx|Excel2003(*.xls)|*.xls|所有文件(*.*)|*.*";
    126                 open.ShowDialog();//选择文件
    127                 txt_filepath.Text = open.FileName;
    128                 ReadExcel(open.FileName, 0);
    129             }
    130             catch (Exception ex)
    131             {
    132                 MessageBox.Show(ex.Message);
    133             }
    134         }
    135         #endregion
    136 
    137         #region 选择下一个单元表
    138         /// <summary>
    139         /// 选择下一个单元表
    140         /// </summary>
    141         /// <param name="sender"></param>
    142         /// <param name="e"></param>
    143         void btn_next_Click(object sender, EventArgs e)
    144         {
    145             int index = 0;
    146             if (tablenames.Length <= 0) { MessageBox.Show("请选择有效的数据源"); return; }
    147             for (int i = 0; i < tablenames.Length; i++)
    148                 if (tablenames[i].Substring(0, tablenames[i].Length - 1) == lb_tablename.Text.Substring(3, lb_tablename.Text.Length - 3)) index = i;
    149             if (index == tablenames.Length - 1) index = 0;
    150             else index++;
    151             ReadExcel(txt_filepath.Text, index);
    152         }
    153         #endregion
    154 
    155         #region 数据列设置
    156         /// <summary>
    157         /// 数据列设置
    158         /// </summary>
    159         /// <param name="sender"></param>
    160         /// <param name="e"></param>
    161         void bt_SetColumns_Click(object sender, EventArgs e)
    162         {
    163             List<string> ExcelColumns = new List<string>();
    164             List<string> SqlColumns = new List<string>();
    165             //获取数据原的列头
    166             DataTable dt = (DataTable)dgv_show.DataSource;
    167             if (dt == null) { MessageBox.Show("请选择数据源"); return; }
    168             foreach (DataColumn column in dt.Columns) ExcelColumns.Add(column.ColumnName);
    169             //获取数据表的列头
    170             if (string.IsNullOrEmpty(com_databasename.Text.Trim()) || string.IsNullOrEmpty(com_tablename.Text.Trim()))
    171             { MessageBox.Show("请选择数据库"); return; }
    172 
    173             try
    174             {
    175                 conn.Open();
    176                 conn.ChangeDatabase(com_databasename.Text);//更换数据库
    177                 using (SqlCommand cmd = conn.CreateCommand())
    178                 {
    179                     cmd.CommandText = @"select name from syscolumns where id in                                                                                    (select id from sysobjects where name=@name) ";
    180                     cmd.Parameters.Add(new SqlParameter("@name", com_tablename.Text.Trim()));
    181                     using (SqlDataReader reader = cmd.ExecuteReader())
    182                         while (reader.Read()) SqlColumns.Add(reader[0].ToString());
    183                 }
    184                 Frm_SetColumns frm_show = new Frm_SetColumns(ExcelColumns, SqlColumns);
    185                 frm_show.DeleteSet = GetColumns;
    186                 frm_show.ShowDialog();
    187             }
    188             catch (Exception ex)
    189             {
    190                 MessageBox.Show(ex.Message);
    191             }
    192             finally
    193             {
    194                 conn.Close();
    195             }
    196         }
    197         #endregion
    198 
    199         #region 委托、获取参数
    200         /// <summary>
    201         /// 委托、获取参数
    202         /// </summary>
    203         void GetColumns(List<SqlBulkCopyColumnMapping> _SqlBulkCopyparameters)
    204         {
    205             SqlBulkCopyparameters = _SqlBulkCopyparameters;
    206         }
    207         #endregion
    208 
    209         #region SqlBulkCopy导入数据
    210         /// <summary>
    211         /// SqlBulkCopy导入数据
    212         /// </summary>
    213         /// <param name="sender"></param>
    214         /// <param name="e"></param>
    215         void bt_ok_Click(object sender, EventArgs e)
    216         {
    217             if (SqlBulkCopyparameters == null)
    218             { MessageBox.Show("参数未设置!"); return; }
    219             try
    220             {
    221                 DateTime begin = DateTime.Now;
    222                 conn.Open();
    223                 conn.ChangeDatabase(com_databasename.Text.Trim());//重新指定数据库
    224                 SqlBulkCopy bulkcopy = new SqlBulkCopy(conn);
    225                 foreach (SqlBulkCopyColumnMapping columnsmapping in SqlBulkCopyparameters)
    226                     bulkcopy.ColumnMappings.Add(columnsmapping);//加载文件与表的列名
    227                 bulkcopy.DestinationTableName = com_tablename.Text.Trim();//指定目标表的表名
    228                 DataTable table = (DataTable)dgv_show.DataSource;//获取要Copy的数据源
    229                 bulkcopy.WriteToServer(table);//将table Copy到数据库
    230                 DateTime end = DateTime.Now;
    231                 string mgr = string.Format("服务器:{0}
    数据库:{1}
    表名:{2}
    共复制{3}条数据
    耗时{4}毫秒",
    232                 conn.DataSource, com_databasename.Text, com_tablename.Text.Trim(),
    233                 table.Rows.Count, (end - begin).TotalMilliseconds);
    234                 MessageBox.Show(mgr);//弹出信息
    235             }
    236             catch (Exception ex)
    237             {
    238                 MessageBox.Show(ex.Message);
    239             }
    240             finally
    241             { conn.Close(); }
    242         }
    243         #endregion
    244 
    245         #region 说明
    246         /// <summary>
    247         /// 说明
    248         /// </summary>
    249         /// <param name="sender"></param>
    250         /// <param name="e"></param>
    251         void bt_instruction_Click(object sender, EventArgs e)
    252         {
    253             string mgr = string.Format("1.Excel文件的第一行为列名,用于与数据表匹配
    2.导入之前请先设置列名的对应关系!
    ");
    254             MessageBox.Show(mgr, "说明");
    255         }
    256         #endregion
    257 
    258         #region 结果集数据处理
    259         /// <summary>
    260         /// 结果集数据处理
    261         /// </summary>
    262         /// <param name="sender"></param>
    263         /// <param name="e"></param>
    264         void dgv_show_DataError(object sender, DataGridViewDataErrorEventArgs e)
    265         { MessageBox.Show(e.Exception.Message, "结果集提示"); }
    266         #endregion
    267 
    268         #region 窗体关闭
    269         /// <summary>
    270         /// 窗体关闭
    271         /// </summary>
    272         /// <param name="sender"></param>
    273         /// <param name="e"></param>
    274         void Frm_ReadExcel_FormClosing(object sender, FormClosingEventArgs e)
    275         {
    276             Application.Exit();
    277         }
    278         #endregion
    279 
    280         #endregion
    281 
    282         #region 自定义方法
    283         /// <summary>
    284         /// 读取Excel
    285         /// </summary>
    286         /// <param name="filename">文件名(含格式)</param>
    287         /// <param name="index">页数(默认0:第一页)</param>
    288         void ReadExcel(string filename, int index)
    289         {
    290             using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";" + "Extended Properties=Excel 8.0;"))
    291             {
    292                 conn.Open();
    293                 DataTable table = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    294                 tablenames = new string[table.Rows.Count];
    295                 for (int i = 0; i < table.Rows.Count; i++) tablenames[i] = table.Rows[i][2].ToString();//获取Excel的表名
    296                 if (tablenames.Length <= 0)
    297                 { MessageBox.Show("Excel中没有表!"); return; }
    298                 using (OleDbCommand cmd = conn.CreateCommand())
    299                 {
    300                     lb_tablename.Text = "表名:" + tablenames[index].Substring(0, tablenames[index].Length - 1);
    301                     cmd.CommandText = "select * from [" + tablenames[index] + "]";
    302                     ds = new DataSet();
    303                     using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
    304                     {
    305                         da.Fill(ds, tablenames[index]);
    306                         dgv_show.DataSource = ds.Tables[0];
    307                     }
    308                 }
    309             }
    310         }
    311 
    312         #endregion
    313 
    314       
    315     }
    316 }

    配置列名的界面如下:

    实现源代码如下:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 using System.Data.SqlClient;
     10 
     11 namespace Winform_SqlBulkCopy
     12 {
     13     public partial class Frm_SetColumns : Form
     14     {
     15         #region 全局变量
     16         /// <summary>
     17         /// 委托
     18         /// </summary>
     19         public Action<List<SqlBulkCopyColumnMapping>> DeleteSet;
     20         List<string> ExcelColumns, SqlColumns;
     21         #endregion
     22 
     23         #region 构造函数
     24         /// <summary>
     25         /// 构造函数
     26         /// </summary>
     27         /// <param name="_ExcelColumns">Excel列</param>
     28         /// <param name="_SqlColumns">数据库列</param>
     29         public Frm_SetColumns(List<string> _ExcelColumns, List<string> _SqlColumns)
     30         {
     31             ExcelColumns = _ExcelColumns;
     32             SqlColumns = _SqlColumns;
     33             InitializeComponent();
     34             Load += new EventHandler(SetColumns_Load);
     35         }
     36         #endregion
     37 
     38         #region 窗体加载
     39         /// <summary>
     40         /// 窗体加载
     41         /// </summary>
     42         /// <param name="sender"></param>
     43         /// <param name="e"></param>
     44         void SetColumns_Load(object sender, EventArgs e)
     45         {
     46             Init();
     47             EventHand();
     48         }
     49         #endregion
     50 
     51         #region 初始化
     52         /// <summary>
     53         /// 初始化
     54         /// </summary>
     55         void Init()
     56         {
     57             MaximizeBox = false;
     58             MaximumSize = MinimumSize = Size;
     59             foreach (string item in ExcelColumns) listbox_Excel.Items.Add(item);
     60             foreach (string item in SqlColumns) listbox_Ssms.Items.Add(item);
     61             if (ExcelColumns.Count != SqlColumns.Count) Text += "(字段数量不匹配)";
     62         }
     63         #endregion
     64 
     65         #region 控件事件挂接
     66         /// <summary>
     67         /// 控件事件挂接
     68         /// </summary>
     69         void EventHand()
     70         {
     71             //Excel控制
     72             lb_Excel_First.Click += new EventHandler(lb_Click);
     73             lb_Excel_Before.Click += new EventHandler(lb_Click);
     74             lb_Excel_Next.Click += new EventHandler(lb_Click);
     75             lb_Excel_Last.Click += new EventHandler(lb_Click);
     76             lb_Excel_Del.Click += new EventHandler(lb_Click);
     77             //Sql控制
     78             lb_Sql_First.Click += new EventHandler(lb_Click);
     79             lb_Sql_Before.Click += new EventHandler(lb_Click);
     80             lb_Sql_Next.Click += new EventHandler(lb_Click);
     81             lb_Sql_Last.Click += new EventHandler(lb_Click);
     82             //确定
     83             bt_OK.Click += new EventHandler(bt_OK_Click);
     84         }
     85         #endregion
     86 
     87         #region 控件事件响应
     88         void lb_Click(object sender, EventArgs e)
     89         {
     90             object excelitem = listbox_Excel.SelectedItem;
     91             object sqlitem = listbox_Ssms.SelectedItem;
     92             int excelindex, sqlindex;
     93             switch ((sender as Label).Name)
     94             {
     95                 //Excel
     96                 case "lb_Excel_First":
     97                     if (excelitem == null) return;
     98                     excelindex = listbox_Excel.SelectedIndex;
     99                     if (excelindex <= 0) return;
    100                     listbox_Excel.Items.Remove(listbox_Excel.SelectedItem);
    101                     listbox_Excel.Items.Insert(0, excelitem);
    102                     listbox_Excel.SelectedIndex = 0;
    103                     break;
    104                 case "lb_Excel_Before":
    105                     if (excelitem == null) return;
    106                     excelindex = listbox_Excel.SelectedIndex;
    107                     if (excelindex <= 0) return;
    108                     listbox_Excel.Items.Remove(listbox_Excel.SelectedItem);
    109                     listbox_Excel.Items.Insert(excelindex - 1, excelitem);
    110                     listbox_Excel.SelectedIndex = excelindex - 1;
    111                     break;
    112                 case "lb_Excel_Next":
    113                     if (excelitem == null) return;
    114                     excelindex = listbox_Excel.SelectedIndex;
    115                     if (excelindex >= listbox_Excel.Items.Count - 1) return;
    116                     listbox_Excel.Items.Remove(listbox_Excel.SelectedItem);
    117                     listbox_Excel.Items.Insert(excelindex + 1, excelitem);
    118                     listbox_Excel.SelectedIndex = excelindex + 1;
    119                     break;
    120                 case "lb_Excel_Last":
    121                     if (excelitem == null) return;
    122                     excelindex = listbox_Excel.SelectedIndex;
    123                     if (excelindex >= listbox_Excel.Items.Count - 1) return;
    124                     listbox_Excel.Items.Remove(listbox_Excel.SelectedItem);
    125                     listbox_Excel.Items.Insert(listbox_Excel.Items.Count - 1, excelitem);
    126                     listbox_Excel.SelectedIndex = listbox_Excel.Items.Count - 1;
    127                     break;
    128                 case "lb_Excel_Del":
    129                     if (excelitem == null) return;
    130                     excelindex = listbox_Excel.SelectedIndex;
    131                     if (excelindex >= listbox_Excel.Items.Count) return;
    132                     listbox_Excel.Items.Remove(listbox_Excel.SelectedItem);
    133                     listbox_Excel.SelectedIndex = listbox_Excel.Items.Count - 1;
    134                     break;
    135                 //Sql
    136                 case "lb_Sql_First":
    137                     if (sqlitem == null) return;
    138                     sqlindex = listbox_Ssms.SelectedIndex;
    139                     if (sqlindex <= 0) return;
    140                     listbox_Ssms.Items.Remove(listbox_Ssms.SelectedItem);
    141                     listbox_Ssms.Items.Insert(0, sqlitem);
    142                     listbox_Ssms.SelectedIndex = 0;
    143                     break;
    144                 case "lb_Sql_Before":
    145                     if (sqlitem == null) return;
    146                     sqlindex = listbox_Ssms.SelectedIndex;
    147                     if (sqlindex <= 0) return;
    148                     listbox_Ssms.Items.Remove(listbox_Ssms.SelectedItem);
    149                     listbox_Ssms.Items.Insert(sqlindex - 1, sqlitem);
    150                     listbox_Ssms.SelectedIndex = sqlindex - 1;
    151                     break;
    152                 case "lb_Sql_Next":
    153                     if (sqlitem == null) return;
    154                     sqlindex = listbox_Ssms.SelectedIndex;
    155                     if (sqlindex >= listbox_Ssms.Items.Count - 1) return;
    156                     listbox_Ssms.Items.Remove(listbox_Ssms.SelectedItem);
    157                     listbox_Ssms.Items.Insert(sqlindex + 1, sqlitem);
    158                     listbox_Ssms.SelectedIndex = sqlindex + 1;
    159                     break;
    160                 case "lb_Sql_Last":
    161                     if (sqlitem == null) return;
    162                     sqlindex = listbox_Ssms.SelectedIndex;
    163                     if (sqlindex >= listbox_Ssms.Items.Count - 1) return;
    164                     listbox_Ssms.Items.Remove(listbox_Ssms.SelectedItem);
    165                     listbox_Ssms.Items.Insert(listbox_Ssms.Items.Count - 1, sqlitem);
    166                     listbox_Ssms.SelectedIndex = listbox_Ssms.Items.Count - 1;
    167                     break;
    168                 default: break;
    169             }
    170         }
    171 
    172         private void bt_OK_Click_1(object sender, EventArgs e)
    173         {
    174 
    175         }
    176 
    177         void bt_OK_Click(object sender, EventArgs e)
    178         {
    179             if (listbox_Excel.Items.Count != listbox_Ssms.Items.Count)
    180             { MessageBox.Show("Excel表格与数据库的列不相同,不能保存!"); return; }
    181             List<SqlBulkCopyColumnMapping> list = new List<SqlBulkCopyColumnMapping>();
    182             for (int i = 0; i < listbox_Excel.Items.Count; i++)
    183                 list.Add(new SqlBulkCopyColumnMapping(listbox_Excel.Items[i].ToString(), listbox_Ssms.Items[i].ToString()));
    184             DeleteSet(list);
    185             DialogResult = DialogResult.OK;
    186         }
    187         #endregion
    188     }
    189 }

    以上便是该案例的核心代码,具体项目源代码可在百度云盘下载,地址:http://pan.baidu.com/s/1mhUXzi4,如遇到需要交流的地方,欢迎下方留言。

  • 相关阅读:
    ElasticSearch搜索
    Muddery框架
    https和http的区别
    multiprocessing模块创建进程
    进程理论基础
    单例模式
    原型模式
    建造者模式
    StrutsTypeConverter的使用
    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系--UML一波流系列讲解
  • 原文地址:https://www.cnblogs.com/BraveBoy/p/5945787.html
Copyright © 2011-2022 走看看