2013-05-28 30 views
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編譯器移動到下一個語句,併成功地運行PROGRAMM。爲什麼這樣呢?

+0

它可能是'openFileDialog1',可能需要處理? –

+0

@FurkanEkinci我不打開任何地方使用'openFileDialog1' ..我使用'openFileDialog1'來只讀文件名。文件不在任何地方打開 –

+0

是否確定存取也關閉,不是文件? –

回答

0

這是因爲您的Acccess數據庫文件已打開。

您不能保持文件打開,並動態地對該文件進行更改。

當使用該文件的程序正在運行時,它會嘗試打開該文件。

但是,如果文件已經由用戶獨佔打開,那麼它就會失敗。

關閉文件,然後嘗試打開連接。

對於其他細節,請按照這DISCUSSION

+0

但我不打開任何訪問數據庫在這裏。我只是閱讀HTML文件?可能是我沒有得到你 –

0

This linkMS Access文件但你也可以嘗試你的html文件。