【问题标题】:The Microsoft Jet database engine could not find the objectMicrosoft Jet 数据库引擎找不到对象
【发布时间】:2013-09-04 21:09:48
【问题描述】:

我正在尝试将 Excel 文件上传到 SQL 数据库,并且在我的计算机上运行良好,但是一旦我上传到服务器,它就会给我这个错误:

异常详细信息:System.Data.OleDb.OleDbException:Microsoft Jet 数据库引擎找不到对象“C:\Windows\SysWOW64\inetsrv\Book1.xls”。确保对象存在并且正确拼写其名称和路径名。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

这是我的代码:

    protected void Button1_Click(object sender, EventArgs e)
    {
        string excelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HRD=YES;IMEX=1'", FileUpload1.PostedFile.FileName);
        using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
        {
            OleDbCommand command = new OleDbCommand(("Select * FROM [Sheet1$]"), connection);
            connection.Open();
            using (DbDataReader dr = command.ExecuteReader())
            {
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy("Data Source=WSCJTCSQ1;Initial Catalog=TestDB;Persist Security Info=True;User ID=test;Password=test"))
                {                  
                    bulkCopy.DestinationTableName = "CoaTest";                        
                    bulkCopy.ColumnMappings.Add("First Name", "fName");
                    bulkCopy.ColumnMappings.Add("Last Name", "lName");
                    bulkCopy.ColumnMappings.Add("Agency", "agency");
                    bulkCopy.WriteToServer(dr);
                }
            }
        }
        Label1.ForeColor = System.Drawing.Color.Red;
        Label1.Text = "Successfully Uploaded The New Roster";   
    }

【问题讨论】:

  • 你能显示保存文件的代码吗?进什么文件夹?
  • 当我在本地机器上托管它时,它只是在桌面上。我应该先将它保存到服务器然后从那里拉出来吗?

标签: c# asp.net .net sql


【解决方案1】:
string file = string.Format("{0}\\{1}", Request.PhysicalApplicationPath,
Guid.NewGuid().ToString().Replace("-",string.Empty));

FileUpload1.SaveAs(file)

现在在您的导入代码中

string excelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source={0};Extended Properties='Excel 8.0;HRD=YES;IMEX=1'", file);

【讨论】:

  • 效果很好!非常感谢您的快速回复!
【解决方案2】:

您需要在连接之前将文件保存在服务器上,例如:

string sServerFilespec = ("C:\\ServerFolder\\" + System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName));
FileUpload1.PostedFile.FileName.SaveAs(sServerFilespec);

【讨论】:

  • -因为这不是访问服务器路径的好方法。尝试使用 Server.MapPath() 或 HttpRequest.PhysicalApplicationPath。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多