下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#将Excel数据表导⼊SQL数据库的两种⽅法(⾼效率)⽅法⼀:使⽤bcp,也就是System.Data.SqlClient.SqlBulkCopy类来实现。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Data.OleDb;namespaceTest1{publicpartialclassForm4:Form{publicForm4(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){//connStr="Server=USER-20180315FD;initialcatalog=AliDataTech;userid=sa;password=wxd123456;ConnectTimeout=5";//测试,将excel中的student导⼊到sqlserver的db_test中,如果sql中的数据表不存在则创建//stringconnString="server=(local);uid=sa;pwd=wxd123456;database=db_test";stringconnString="Server=USER-20180315FD;initialcatalog=db_test;userid=sa;password=wxd123456;ConnectTimeout=5";System.Windows.Forms.OpenFileDialogfd=newOpenFileDialog();if(fd.ShowDialog()==DialogResult.OK){TransferData(fd.FileName,"student",connString);}}publicvoidTransferData(stringexcelFile,stringsheetName,stringconnectionString){DataSetds=newDataSet();try{//获取全部数据stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+excelFile+";"+"ExtendedProperties=Excel8.0;";OleDbConnectionconn=newOleDbConnection(strConn);conn.Open();stringstrExcel=OleDbDataAdaptermyCommand=null;strExcel=string.Format("select*from[{0}$]",sheetName);myCommand=newOleDbDataAdapter(strExcel,strConn);myCommand.Fill(ds,sheetName);//如果⽬标表不存在则创建,excel⽂件的第⼀⾏为列标题,从第⼆⾏开始全部都是数据记录stringstrSql=string.Format("ifnotexists(select*fromsysobjectswherename='{0}')createtable{0}(",sheetName);//以sheetName为表名foreach(System.Data.DataColumncinds.Tables[0].Columns){strSql+=string.Format("[{0}]varchar(255),",c.ColumnName);}strSql=strSql.Trim(',')+")";using(System.Data.SqlClient.SqlConnectionsqlconn=newSystem.Data.SqlClient.SqlConnection(connectionString)){sqlconn.Open();System.Data.SqlClient.SqlCommandcommand=sqlconn.CreateCommand();command.CommandText=strSql;command.ExecuteNonQuery();sqlconn.Close();}//⽤bcp导⼊数据//excel⽂件中列的顺序必须和数据表的列顺序⼀致,因为数据导⼊时,是从excel⽂件的第⼆⾏数据开始,不管数据表的结构是什么样的,反正就using(System.Data.SqlClient.SqlBulkCopybcp=newSystem.Data.SqlClient.SqlBulkCopy(connectionString)){bcp.SqlRowsCopied+=newSystem.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);bcp.BatchSize=1;//每次传输的⾏数bcp.NotifyAfter1;//进度提⽰的⾏数bcp.DestinationTableName=sheetName;//⽬标表bcp.WriteToServer(ds.Tables[0]);}}catch(Exceptionex){System.Windows.Forms.MessageBox.Show(ex.Message);}}//进度显⽰voidbcp_SqlRowsCopied(objectsender,System.Data.SqlClient.SqlRowsCopiedEventArgse){this.Text=e.RowsCopied.ToString();textBox1.Text=e.RowsCopied.ToString();textBox1.Update();this.Update();}privatevoidprogressBar1_Click(objectsender,EventArgse){}}}⽅法⼆:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Data.OleDb;usingSystem.Data.SqlClient;namespaceTest1{publicpartialclassForm5:Form{publicForm5(){InitializeComponent();}DataTabledt=newDataTable();//stringconnString="Server=USER-20180315FD;initialcatalog=db_test;userid=sa;password=wxd123456;ConnectTimeout=5";stringconnString="Server=USER-20180315FD;initialcatalog=db_test;userid=sa;password=wxd123456;ConnectTimeout=5";SqlConnectionconn;privatevoidbutton1_Click(objectsender,EventArgse){System.Windows.Forms.OpenFileDialogfd=newOpenFileDialog();if(fd.ShowDialog()==DialogResult.OK){stringfileName=fd.FileName;bind(fileName);}}privatevoidbind(stringfileName){stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+fileName+";"+"ExtendedProperties='Excel8.0;HDR=Yes;IMEX=1'";OleDbDataAdapterda=newOleDbDataAdapter("SELECT*FROM[student$]",strConn);DataSetds=newDataSet();try{da.Fill(ds);dt=ds.Tables[0];this.dataGridView1.DataSource=dt;}catch(Exceptionerr){MessageBox.Show("操作失败!"+err.ToString());}}//将Datagridview1的记录插⼊到数据库privatevoidbutton2_Click(objectsender,EventArgse){conn=newSqlConnection(connString);conn.Open();if(dataGridView1.Rows.Count>0){DataRowdr=null;for(inti=0;i<dt.Rows.Count;i++){dr=dt.Rows[i];insertToSql(dr);}conn.Close();MessageBox.Show("导⼊成功!");}else{MessageBox.Show("没有数据!");}}privatevoidinsertToSql(DataRowdr){//excel表中的列名和数据库中的列名⼀定要对应stringname=dr["StudentName"].ToString();stringsex=dr["Sex"].ToString();stringno=dr["StudentIDNO"].ToString();stringmajor=dr["Major"].ToString();stringsql="insertintostudentvalues('"+name+"','"+sex+"','"+no+"','"+major+"')";SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();}}}.9Form5 l=1恤button! butt泣宝贝名称宝贝名称搜索类型流里来谏展现里^►曰期18月芽儿粗踉短2019/1/12 18DYV28匕CI?ICIC(|"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中生物理实验仪器使用规范手册
- 2026三年级诗词友善教育融入课件
- 科学预防疾病健康堡垒我筑建小学主题班会课件
- 小学主题班会课件:生活与成长的对话
- 2026年京翰性格测试题及答案
- 2026年delfb1测试题及答案
- 确认技术部提交的软件测试报告确认函(3篇)
- 警惕网络安全陷阱,护航健康成长几年级主题班会课件
- 2026年生物人教版期末测试题及答案
- 2026年oppo金耳朵测试题及答案
- ERCP诊治指南2021版解读
- DB13-T 5871-2023 矿山地质环境恢复治理工程资料管理规程
- 部编版2024年三年级语文下册《课内阅读》专项复习题及答案
- 2024年医院依法执业培训课件
- 自考08257《舆论学》备考试题库(含答案)
- 《数值分析简明教程》讲义
- (正式版)JTT 1495-2024 公路水运危险性较大工程安全专项施工方案审查规程
- 20G520-1-2钢吊车梁(6m-9m)2020年合订本
- 新能源技术对环境保护的影响及作用
- GB/T 43800-2024船舶电气与电子装置电磁兼容性非金属船舶
- DB6505-T 121-2021 舍饲肉牛饲养管理技术规程
评论
0/150
提交评论