我正在使用vb.net编写ArcMap-AddIn。尝试compact
我的IWorkspace(mdb)时遇到错误,错误是:
收到COMException
您尝试打开已由用户打开的数据库 计算机'XXXXXX'上的'ADMIN'。数据库时再试一次 可用。
在ESRI.ArcGIS.Geodatabase.IDatabaseCompact.Compact()上 MyProject.MyClass.CompactGDB(IWorkspace pWS)
如何压缩使用的工作空间? 还有8个其他功能也使用了我的工作区。
有什么建议吗?
守则:
' CompactGDB
Public Sub CompactGDB(ByVal pWS As IWorkspace)
Dim pDatabaseCompact As IDatabaseCompact
If (TypeOf pWS Is IDatabaseCompact) Then
pDatabaseCompact = CType(pWS, IDatabaseCompact)
If (pDatabaseCompact.CanCompact) Then
Try
pDatabaseCompact.Compact()
Catch ex As Exception
MessageBox.Show(ex.type & ex.Message & ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End If
End Sub
答案 0 :(得分:0)
找到解决方案:
在调用Compact()方法之前,请确保数据库上没有任何现有锁。
如果是文件地理数据库,请在Windows资源管理器中打开 gdb 目录并查找 LOCK 类型文件,它们以.lock结尾。
对于个人地理数据库,目录中会出现 .ldb 文件,其名称与 .mdb 相同。
使用 ESRI.ArcGIS.ADF.Connection.Local 命名空间
中的 ComReleaser Class