下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年电力安全及用电安全知识竞赛试题库及答案
- 慢病防控中的健康公平促进策略
- 慢病管理中的患者参与机制
- 安全培训协议书格式范例
- 车辆调度服务承揽合同
- 学校综合办公室网络加密方案
- 核生化应急救援中心火灾预案
- 2026天津市滨海新区事业单位招聘25人备考题库必考题
- T∕GDAM 005.1-2025 实验室仪器设备管理规范 第1部分:总则
- 2025年全面质量管理体系建设项目可行性研究报告
- 光疗课件教学课件
- 北师大版二上《参加欢乐购物活动》(课件)
- 基坑土方开挖专项施工方案(完整版)
- 招标人主体责任履行指引
- 健康管理师考试题库及答案题库大全
- 雨课堂学堂云在线《中国传统艺术-篆刻、书法、水墨画体验与欣赏(哈工 )》单元测试考核答案
- 公墓骨灰安葬协议书
评论
0/150
提交评论