[Arcengine] 关于 ITable.DeleteSearchedRows 报错的问题

探讨在ArcGIS环境下,使用ITable.DeleteSearchedRows方法尝试跨用户删除SDE库属性表行数据时遇到的权限问题及解决思路。发现即使赋予管理员权限,仍无法直接操作其他用户的数据。最终采用ExecuteSQL方法作为替代方案。

实际项目中需要删除 SDE 库指定属性表的指定行,想到以前用过ITable.DeleteSearchedRows 完成删除本地数据的操作,便搬来照用。然而报错,具体提示是“这个集合中找不到此项目”。查了 esri 的开发文档,并没有详细说明。
官方帮助文档

出错的代码如下,此处略过获取工作空间的代码。

ITable ptable=workspace.OpenTable(name);
ptable.DeleteSearchedRows(new QueryFilterClass(){WhereClause="bsm = 1"});

拿queryfilter的条件到库里面去执行删除操作没有报错。
本项目登录获得的工作空间是 A 用户的,而要删除的数据是 B 用户的。第一反应是 A 用户权限不够高,无法对 B 用户的表进行删除操作,通过赋予A用户管理员权限后依旧报此错误,排除这一可能。
考虑的第二个可能性是没开启事务,然而把事务开了以后报同样的错误。
最后试着用本方法删除 A 用户下属性表/空间表的某行 ,成功执行;再试着用 A 用户删除 B 用户下空间表的某行,成功执行。
所以最后的结论就是 A 用户无法跨用户删除 B 用户下的属性表,原因未知,望指教。
最后使用的替代方法是workspace.ExecuteSQL("");

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值