通过OLEDB读取HTML文件失败。

3
我正在尝试使用以下代码通过OLEDB阅读器读取HTML文件:

我正在尝试使用以下代码通过OLEDB阅读器读取HTML文件:

DataTable dTable;
string strDataSource = "";
string strDBFile = "";
long intPos = 0;
strDataSource = mstrFilePath;
dTable = new DataTable();
mCon = new System.Data.OleDb.OleDbConnection();
mCon.ConnectionString  = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + openFileDialog1.FileName + ";Extended Properties=\"HTML Import;HDR=NO;IMEX=1\";");     
if (mCon.State == ConnectionState.Closed)
{
    mCon.Open(); // gettting failed here
}
dTable = mCon.GetSchema("Tables");
        bSelectionChanged = true;
        lstTables.Items.Clear();
        foreach (DataRow DRow in dTable.Rows)
        {

            if (DRow["TABLE_TYPE"].ToString() == "TABLE" || DRow["TABLE_TYPE"].ToString() == "VIEW")
            {
                intPos = DRow["TABLE_NAME"].ToString().LastIndexOf("FilterDatabase");
                lstTables.Items.Add(DRow["TABLE_NAME"]);
            }
        }
        if (lstTables.Items.Count == 1)
        {
            lstTables.Visible = false;
            grdSampleDataControl.Dock = DockStyle.Fill;
        }
        else
        {
            lstTables.Visible = true;
            grdSampleDataControl.Dock = DockStyle.None;
        }
        bSelectionChanged = true;
        dTable.Dispose();
        mCon.Close();
        openFileDialog1.Dispose();

这里出现了异常,导致失败。

Microsoft Office Access数据库引擎无法打开或写入文件“”。它已经被其他用户独占打开,或者您需要权限来查看和编写其数据。

但是文件没有在任何地方打开?

编辑

在调试时,当它在mCon.Open()处抛出异常时,如果我按F10,则编译器会移动到下一条语句并成功运行程序。为什么会这样呢?


你确定是访问关闭了,而不是文件? - Furkan Ekinci
@FurkanEkinci 文件路径为 D:\Projects\CDR_RAW_FILES\8435921487.htm - Rajeev Kumar
1
你可以尝试使用硬编码路径吗?使用 D:\Projects\CDR_RAW_FILES\8435921487.htm 替代 openFileDialog1.FileName - Furkan Ekinci
@FurkanEkinci 在stackoverflow中是否有附加文件的选项,这样我就可以附加示例HTML了。 - Rajeev Kumar
@RajeevKumar 我从这里找到了一个样本数据,并尝试打开连接。它正常工作了。你的数据格式看起来像链接中的吗? - Furkan Ekinci
显示剩余15条评论
1个回答

0

这是因为您的Access数据库文件已经被打开。

您不能保持文件处于打开状态,并动态地对其进行更改。

当程序正在使用该文件时,它会尝试打开该文件。

但是,如果文件已经被用户独占性地打开,则会失败。

关闭文件,然后尝试打开连接。

有关详细信息,请参阅DISCUSSION


但我这里并没有打开任何访问数据库的操作。我只是在读取HTML文件?或许我没有理解你的意思。 - Rajeev Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接