我是新来的。事实上,这是我第一次在 stackoverflow 上发布问题。我做了很多搜索,但找不到答案。这是我正在尝试做的事情的要点。
- 使用 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();
你认为我试图完成我想做的事情的方式有问题吗?谢谢你,祝你有美好的一天。