通过OLEDB读取Html文件失败

时间:2013-05-28 05:37:00

标签: c# winforms oledbdatareader

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

2 个答案:

答案 0 :(得分:0)

发生这种情况是因为您的Acccess数据库文件已打开。

您无法保持文件打开状态,并动态更改该文件。

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

但是,如果文件已经由用户专门打开,那么它就会失败。

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

有关其他详细信息,请按此DISCUSSION

答案 1 :(得分:0)

This link关于 MS Access文件,但您也可以尝试使用html文件。