3

我正在尝试使用以下代码通过 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 编译器将移动到下一条语句并成功运行程序。为什么会这样??

4

1 回答 1

0

这是因为您的访问数据库文件已打开。

您不能保持文件打开,并动态更改该文件。

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

但是,如果文件已经被用户以独占方式打开,那么它会失败。

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

有关它的其他详细信息,请按照此讨论

于 2013-05-28T05:51:30.433 回答