C#.NET中如何批量插入大量数据到数据库中
在WEB项目开发过程中有时会碰到批量插入数据到数或者是将EXCEL文件据入到数据库中.为了方便实现可以先将EXCEL导入到GRIDVIEW中然后一次批量插入.实现代码如下:
前台代码
<asp:GridViewID="dgBom"runat="server"AutoGenerateColumns="false"CellPadding="1"CellSpacing="2"> <HeaderStyleBackColor="#ededed"/> <Columns> <asp:TemplateFieldHeaderText="学号"> <ItemTemplate> <asp:TextBoxID="studentnumber"runat="server"Text='<%#Eval("studentnumber")%>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateFieldHeaderText="学生姓名"> <ItemTemplate> <asp:TextBoxID="studentname"runat="server"Text='<%#Eval("studentname")%>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:FileUploadID="FileUpload1"runat="server"Font-Italic="False"/> <asp:ButtonID="btn2"runat="server"OnClick="btn2_Click"Text="导入数据"/> <asp:ButtonID="btninsert"runat="server"OnClick="btninsert_Click"Text="插入到数据库中"/>
后台代码:
//首先在命名空间中加入以下两行 usingSystem.Data.SqlClient; usingSystem.Data.OleDb; protectedvoidbtn2_Click(objectsender,EventArgse) { stringfilepath=FileUpload1.PostedFile.FileName; ReadExcel(filepath,dgBom); } publicvoidReadExcel(stringsExcelFile,GridViewdgBom) { DataTableExcelTable; DataSetds=newDataSet(); //Excel的连接 OleDbConnectionobjConn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+sExcelFile+";"+"ExtendedProperties=Excel8.0;"); objConn.Open(); DataTableschemaTable=objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null); stringtableName=schemaTable.Rows[0][2].ToString().Trim();//获取Excel的表名,默认值是sheet1 stringstrSql="select*from["+tableName+"]"; OleDbCommandobjCmd=newOleDbCommand(strSql,objConn); OleDbDataAdaptermyData=newOleDbDataAdapter(strSql,objConn); myData.Fill(ds,tableName);//填充数据 dgBom.DataSource=ds; dgBom.DataBind(); objConn.Close(); ExcelTable=ds.Tables[tableName]; intiColums=ExcelTable.Columns.Count;//列数 intiRows=ExcelTable.Rows.Count;//行数 //定义二维数组存储Excel表中读取的数据 string[,]storedata=newstring[iRows,iColums]; for(inti=0;i<ExcelTable.Rows.Count;i++) for(intj=0;j<ExcelTable.Columns.Count;j++) { //将Excel表中的数据存储到数组 storedata[i,j]=ExcelTable.Rows[i][j].ToString(); } intexcelBom=0;//记录表中有用信息的行数,有用信息是指除去表的标题和表的栏目,本例中表的用用信息是从第三行开始 //确定有用的行数 for(intk=2;k<ExcelTable.Rows.Count;k++) if(storedata[k,1]!="") excelBom++; if(excelBom==0) { Response.Write("<scriptlanguage=javascript>alert('您导入的表格不合格式!')</script>"); } else { //LoadDataToDataBase(storedata,excelBom)//该函数主要负责将storedata中有用的数据写入到数据库中,在此不是问题的关键省略 } } protectedvoidbtninsert_Click(objectsender,EventArgse) { foreach(GridViewRowgvindgBom.Rows) { //我的连接字符串是写在WEB.CONFIG中的. stringcon=System.Configuration.ConfigurationManager.AppSettings["ConnectionString1"].ToString(); SqlConnectionconn=newSqlConnection(con); SqlCommandcmd=conn.CreateCommand(); cmd.CommandType=CommandType.Text; cmd.CommandText="insertintostudent(studentnumber,studentname)values(@studentnumber,@studentname)"; cmd.Parameters.Add("@studentnumber",SqlDbType.NVarChar,20); cmd.Parameters.Add("@studentname",SqlDbType.NVarChar,10); cmd.Parameters["@studentname"].Value=((TextBox)gv.FindControl("studentname")).Text; cmd.Parameters["@studentnumber"].Value=((TextBox)gv.FindControl("studentnumber")).Text; try { conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } finally { if(conn!=null) conn.Dispose(); } } }
以上内容就是本文的全部叙述,希望对大家学习C#.NET中如何批量插入大量数据到数据库中有所帮助。