C#将Excel数据表导入SQL数据库的两种方法(高效率).docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C#将Excel数据表导入SQL数据库的两种方法(高效率).docx》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# Excel 数据表 导入 SQL 数据库 方法 高效率
- 资源描述:
-
1、C#将Excel数据表导SQL数据库的两种法(效率)法:使bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。using System;using System.Collections.Generic; using System.ComponentModel; using System.Data;using System.Drawing; using System.Linq; using System.Text;using System.Threading.Tasks; using System.Windows.Forms;using System.Da
2、ta.OleDb;namespace Test1public partial class Form4 : Formpublic Form4()InitializeComponent();private void button1_Click(object sender, EventArgs e)/connStr = Server=USER-20180315FD;initial catalog=AliDataTech;user id=sa;password=wxd123456;Connect Timeout=5;/测试,将excel中的student导到sqlserver的db_test中,如果s
3、ql中的数据表不存在则创建/string connString = server = (local); uid = sa; pwd = wxd123456; database = db_test;string connString = Server=USER-20180315FD;initial catalog=db_test;user id=sa;password=wxd123456;Connect Timeout=5; System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();if (fd.ShowDialog() = Di
4、alogResult.OK)TransferData(fd.FileName, student, connString);public void TransferData(string excelFile, string sheetName, string connectionString)DataSet ds = new DataSet(); try/获取全部数据string strConn = Provider = Microsoft.Jet.OLEDB.4.0; + Data Source= + excelFile + ; + Extended Properties = Excel 8.
5、0; OleDbConnection conn = new OleDbConnection(strConn);conn.Open(); string strExcel = ;OleDbDataAdapter myCommand = null;strExcel = string.Format(select * from 0$, sheetName); myCommand = new OleDbDataAdapter(strExcel, strConn); myCommand.Fill(ds, sheetName);/如果标表不存在则创建,excel件的第为列标题,从第开始全部都是数据记录stri
6、ng strSql = string.Format(if not exists(select * from sysobjects where name = 0) create table 0(, sheetName); /以sheetName为表名foreach (System.Data.DataColumn c in ds.Tables0.Columns)strSql += string.Format(0 varchar(255), c.ColumnName);strSql = strSql.Trim(,) + );using (System.Data.SqlClient.SqlConnec
7、tion sqlconn = new System.Data.SqlClient.SqlConnection(connectionString)sqlconn.Open();System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand(); command.CommandText = strSql;command.ExecuteNonQuery(); sqlconn.Close();/bcp导数据/excel件中列的顺序必须和数据表的列顺序致,因为数据导时,是从excel件的第数据开始,不管数据表的结构是什么样的,反正就usi
8、ng (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); bcp.BatchSize = 1;/每次传输的数bcp.NotifyAfter = 1;/进度提的数bcp.DestinationTableName = sheetName;/标表bcp.WriteToServer
展开阅读全文