我正在尝试使用以下代码通过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编译器移动到下一个语句并成功运行该程序。为什么会如此??
答案 0 :(得分:0)
发生这种情况是因为您的Acccess数据库文件已打开。
您无法保持文件打开状态,并动态更改该文件。
使用该文件的程序正在运行时,它会尝试打开该文件。
但是,如果文件已经由用户专门打开,那么它就会失败。
关闭文件,然后尝试打开连接。
有关其他详细信息,请按此DISCUSSION。
答案 1 :(得分:0)
This link关于 MS Access文件,但您也可以尝试使用html文件。