我是靠谱客的博主 外向小松鼠,最近开发中收集的这篇文章主要介绍C#.net中批量插入数据到数据库中,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在WEB项目开发过程中有时会碰到批量插入数据到数或者是将EXCEL文件据入到数据库中.为了方便实现可以先将EXCEL导入到GRIDVIEW中然后一次批量插入.实现代码如下:

前台代码

 
<asp:GridView ID="dgBom" runat="server" AutoGenerateColumns="false" CellPadding="1" CellSpacing="2">
<HeaderStyle BackColor="#ededed" />
    <Columns>
       
      <asp:TemplateField HeaderText="学号">
        <ItemTemplate>
          <asp:TextBox ID="studentnumber" runat="server" Text='<%#Eval("studentnumber") %>' ></asp:TextBox>
        </ItemTemplate>
      </asp:TemplateField>
      <asp:TemplateField HeaderText="学生姓名">
        <ItemTemplate>
          <asp:TextBox ID="studentname" runat="server"  Text='<%#Eval("studentname") %>'></asp:TextBox>
        </ItemTemplate>
      </asp:TemplateField>
   
    </Columns>

</asp:GridView>
    <asp:FileUpload ID="FileUpload1" runat="server" Font-Italic="False" />
    <asp:Button ID="btn2" runat="server" OnClick="btn2_Click" Text="导入数据" />
    <asp:Button ID="btninsert" runat="server" OnClick="btninsert_Click" Text="插入到数据库中"/>

后台代码:

//首先在命名空间中加入以下两行

using System.Data.SqlClient;
using System.Data.OleDb;

 

protected void btn2_Click(object sender, EventArgs e)
    {
        string filepath = FileUpload1.PostedFile.FileName;
        ReadExcel(filepath, dgBom);

    }
    public void ReadExcel(string sExcelFile, GridView dgBom)
    {
        DataTable ExcelTable;
        DataSet ds = new DataSet();
        //Excel的连接
        OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sExcelFile + ";" + "Extended Properties=Excel 8.0;");
        objConn.Open();
        DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
        string tableName = schemaTable.Rows[0][2].ToString().Trim();//获取 Excel 的表名,默认值是sheet1
        string strSql = "select * from [" + tableName + "]";
        OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
        OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
        myData.Fill(ds, tableName);//填充数据

        dgBom.DataSource =ds;
        dgBom.DataBind();
        objConn.Close();
      
        ExcelTable = ds.Tables[tableName];
        int iColums = ExcelTable.Columns.Count;//列数
        int iRows = ExcelTable.Rows.Count;//行数

        //定义二维数组存储 Excel 表中读取的数据
        string[,] storedata = new string[iRows, iColums];
    
        for(int i=0;i<ExcelTable.Rows.Count;i++)
            for (int j = 0; j < ExcelTable.Columns.Count; j++)
            {
                //将Excel表中的数据存储到数组
                storedata[i, j] = ExcelTable.Rows[i][j].ToString();
 
            }
        int excelBom = 0;//记录表中有用信息的行数,有用信息是指除去表的标题和表的栏目,本例中表的用用信息是从第三行开始
        //确定有用的行数
        for (int k = 2; k < ExcelTable.Rows.Count; k++)
            if (storedata[k, 1] != "")
                excelBom++;
        if (excelBom == 0)
        {
            Response.Write("<script language=javascript>alert('您导入的表格不合格式!')</script>");
        }
        else
        {
            //LoadDataToDataBase(storedata,excelBom)//该函数主要负责将 storedata 中有用的数据写入到数据库中,在此不是问题的关键省略
        }

 

    }
    protected void btninsert_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow gv in dgBom.Rows)
        {

           //我的连接字符串是写在WEB.CONFIG中的.
            string con = System.Configuration.ConfigurationManager.AppSettings["ConnectionString1"].ToString();
            SqlConnection conn = new SqlConnection(con);
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "insert into student (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中批量插入数据到数据库中的全部内容,希望文章能够帮你解决C#.net中批量插入数据到数据库中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部