ArcEngine修改字段名称

修改字段名称需注意设置锁模式为执行模式锁(esriExclusiveSchemaLock),当其他应用已经锁定要素类,不管是(esriExclusiveSchemaLock,还是esriSharedSchemaLock),都无法修改当前要素类锁类型,即无法修改字段名称。当字段修改完成后应该将当前的执行模式锁(esriExclusiveSchemaLock)改为共享锁(esriExclusiveSchemaLock)。另外IClassSchemaEdit4接口还可以修改属性域、字段缺省值(即默认值)等等,但是不支持字段长度修改。
以下是实现代码:

/// <summary>
        /// 修改字段名称
        /// </summary>
        /// <param name="pFeatureClass">目标要素类</param>
        /// <param name="oldFieldName">目标字段名称</param>
        /// <param name="newFieldName">目标字段新名称</param>
        /// <param name="aliasName">目标字段新别名</param>        
        private bool ModifyFieldName(IFeatureClass pFeatureClass, string oldFieldName, string newFieldName, string aliasName)
        {
            bool isModified = false;
            ISchemaLock pSchemaLock = null;
            try
            {
                IFields pFields = pFeatureClass.Fields;
                int fIndex = pFields.FindField(oldFieldName);
                if (fIndex == -1) return isModified;
                pSchemaLock = pFeatureClass as ISchemaLock;
                pSchemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);//设置编辑锁
                IClassSchemaEdit4 pClassSchemaEdit = pFeatureClass as IClassSchemaEdit4;
                pClassSchemaEdit.AlterFieldAliasName(oldFieldName, aliasName);
                pClassSchemaEdit.AlterFieldName(oldFieldName, newFieldName);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
               //释放编辑锁
pSchemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock); 
                isModified = true;
            }
            return isModified;
        }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值