日期:2014-05-17  浏览次数:20441 次

上传excel文件记录到数据库
最近遇到这样一个问题,我要将excel中的数据导入到数据库,字段比较多,大概50个吧,上传3000条记录需要一个小时,
实在有点太慢了,请高手指点如何优化一下。

  另外,我每执行一条sql 语句都 会新建 sqlconnection 对象并连接数据库,用完后关闭,这样对性能会有大的影响吗?

------解决方案--------------------
insert tb(字段1,字段2) 你的集合
或者你用事物就好了,那样就是一次连接了
可以用Adapter.Update()
存储过程处理
------解决方案--------------------
开关数据库连接对象 肯定影响效率啊

拼接了以后再提交吧

1个小时确实太夸张了
------解决方案--------------------
第一:如何读取Excel数据很重要,肯定不能轮询读取,用下面的函数读数据
C# code

        /// <summary>
        /// 读取用户指定WorkSheet的数据,作为DataTable输出
        /// </summary>
        /// <param name="excelFilePath">被读取的Excel文档路径</param>
        /// <param name="HeadRowAsColumnCaption">是否将Excel第一行作为DataTable表头输出</param>
        /// <param name="workSheetName">被读取的WorkSheet名称</param>
        /// <returns></returns>
        public static System.Data.DataTable ReadExcelToDataTable(string excelFilePath, bool HeadRowAsColumnCaption, string workSheetName)
        {
            System.Data.DataTable dataTable = new System.Data.DataTable();

            System.Data.OleDb.OleDbConnection conn = GetConnection(excelFilePath, HeadRowAsColumnCaption);
            if (conn != null)
            {
                conn.Open();
                string strSql = "select * from [" + workSheetName + "$]";
                System.Data.OleDb.OleDbDataAdapter sda = new System.Data.OleDb.OleDbDataAdapter(strSql, conn);
                dataTable.TableName = workSheetName;
                sda.Fill(dataTable);
                conn.Close();
            }
            return dataTable;
        }