0
我對此很陌生。事實上,這是我第一次在stackoverflow上發佈一個問題。我做了很多搜索,但是找不到答案。 這是我想要做的事情的要點。以編程方式在c#中打開時無法關閉Access數據庫文件
- 使用ADOX打開訪問數據庫文件。
- 對於數據庫中的所有非隱藏和非系統表,將條目添加到「驗證文本」屬性。
- 關閉訪問數據庫文件。
以下是該文件正在發生的事情。
- 該文件夾中存在鎖定文件* .ldb,這會觸發錯誤 數據庫被另一個進程打開。
這是我試過的徒然。
- 關閉在每次迭代foreach循環時打開的表。
- 在foreach循環後立即關閉目錄類和對象。
- 刪除foreach循環中的所有代碼。
這是我打算做的。
使用Try Catch捕獲錯誤。
cn = new ADODB.Connection(); cat = new ADOX.CatalogClass(); cn.Open(tmpStr); cat.ActiveConnection = cn; //Loop through all tables to add the validation text foreach (Table t in cat.Tables) { tname = t.Name; ttype = t.Type == null ? string.Empty : t.Type; tprop = t.Properties["Jet OLEDB:Table Hidden In Access"].Value.ToString(); if (ttype.ToUpper() == "TABLE" && tprop.ToUpper() == "FALSE") // { t.Properties["Jet OLEDB:Table Validation Text"].Value = "this is table " + tname + " student1"; } //System.Runtime.InteropServices.Marshal.FinalReleaseComObject(t); } //Close all open objects System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.Tables); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat); GC.Collect();
你覺得有什麼問題,我想完成我想要做什麼呢?謝謝你,祝你有美好的一天。
@Leskyam:謝謝你的建議,但它似乎仍然是不當行爲。這似乎很奇怪,即使我嘗試使用連接對象和GC.Collect關閉數據庫文件,也會發生這種情況。 – Lakki