代码如下:

 FileUpload2.SaveAs(path);
            import_sql = "begin tran ;insert into manage_student_info select 字段略 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=" + @path + "',Sheet1$) ;commit tran";
            SqlCommand comm = new SqlCommand(import_sql, conn);
            comm.Parameters.AddWithValue("@path", path);
            try
            {
                conn.Open();
                comm.ExecuteNonQuery();
                comm.Dispose();
                conn.Close();
                FileUpload2.PostedFile.InputStream.Close();
                FileUpload2.PostedFile.InputStream.Dispose();
                FileUpload2.Dispose();
                if (File.Exists(path))
                    File.Delete(path);
             }
  我要实现:先上传文件到服务器--》把该文件导入数据库--》删除该文件
问题:第一和二步骤可以实现,删除该文件是出现问题,错误提示:
文件“C:\inetpub\wwwroot\by\TempFile\admin学生信息表_样表.xls”正由另一进程使用,因此该进程无法访问该文件。 怎么修改代码呢?谢谢!

解决方案 »

  1.   

        GC.Collect();
               
                    if (File.Exists(path))
                        File.Delete(path);
      

  2.   

    楼上信息说下,学习ASP.NET不久啊
      

  3.   

    加上GC.Collect();后我连续执行了5次导入正常,在执行第6次操作后提示,和原来相同的错误!!!
      
      

  4.   

    其实我是要实现远程导入excel到SQLSERVER,目前没有其它好的办法,才用的这个办法,期待更有效的办法。
      

  5.   

    如果不加上GC.Collect();我连续执行了3次导入正常,在执行第4次操作后提示那个进程的错误!!! 
      

  6.   

    或者你可以使用oledb连接excel再往sql中导看看,能不能及时删除
      

  7.   

    每一步对文件的操作以后记得要Close()或者Dispose()就可以了。是不是有其他的地方打开了没有关闭的情况。
      

  8.   


    conn.Dispose();
    试试
      

  9.   

     在每一步SaveAs、comm、DELL的后面加上了
    FileUpload2.PostedFile.InputStream.Close();
                FileUpload2.PostedFile.InputStream.Dispose();
                FileUpload2.Dispose();
    后连续导入20次没有出现进程问题,目前保留这个非常笨的办法,谢谢以上的各位朋友,
      

  10.   

    你要实现的这个功能,是频繁连续操作的?
    如果不是频繁操作的,如前面所说加上GC.Collect()回收后,
    应该是没问题的
      

  11.   

    FileUpload2.SaveAs(path);
      FileUpload2.Dispose(); 
                import_sql = "begin tran ;insert into manage_student_info select 字段略 from O 改成这样试试