Geodatabase - 修改字段别名(Field Alias)

  以下代码演示的是通过个人数据库打开要素类,并对指定的字段别名进行修改,其中,需要注意的是,不能通过Engine中的AxMapControl直接获得,如

1  //直接获得IFeatureClass.
2 //ESRI.ArcGIS.Carto.ILayer lyr = mapCtrl_main.get_Layer(0);
3 //ESRI.ArcGIS.Carto.IFeatureLayer flyr = (ESRI.ArcGIS.Carto.IFeatureLayer)lyr;
4 //ESRI.ArcGIS.Geodatabase.IFeatureClass fc = flyr.FeatureClass;

  这样是不可以的:

 1 /// <summary>
 2         /// 修改字段别名.
 3         /// </summary>
 4         /// <param name="personalWorkspacePath">个人数据库路径(当然可以为其他类型数据库),如"G:\doc\gis\1.400\data\pdb.mdb"</param>
 5         /// <param name="featureClassName">要素类名,如"hyd1_4l_1"</param>
 6         /// <param name="oriFieldName">原字段别名,如"FNODE_".</param>
 7         /// <param name="desFieldName">新字段别名,如"fnode".</param>
 8         private void AlterFieldAliasName(string personalWorkspacePath, string featureClassName, string oriFieldName, string desFieldName) {
 9             //通过IFeatureWorkspace获得IFeatureClass.
10             ESRI.ArcGIS.Geodatabase.IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass();
11             ESRI.ArcGIS.Geodatabase.IWorkspace ws = wsf.OpenFromFile(personalWorkspacePath, 0);
12             ESRI.ArcGIS.Geodatabase.IFeatureWorkspace fws = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)ws;
13             ESRI.ArcGIS.Geodatabase.IFeatureClass fc = fws.OpenFeatureClass(featureClassName);
14
15             ESRI.ArcGIS.Geodatabase.ITable t = (ESRI.ArcGIS.Geodatabase.ITable)fc;
16             if (t.FindField(oriFieldName) == -1)    //无指定字段名.
17                 return;
18
19             ESRI.ArcGIS.Geodatabase.IObjectClass objClass = (ESRI.ArcGIS.Geodatabase.IObjectClass)fc;
20             ESRI.ArcGIS.Geodatabase.ISchemaLock slock = (ESRI.ArcGIS.Geodatabase.ISchemaLock)objClass;
21             try {
22                 slock.ChangeSchemaLock(ESRI.ArcGIS.Geodatabase.esriSchemaLock.esriExclusiveSchemaLock);
23                 ESRI.ArcGIS.Geodatabase.IClassSchemaEdit cSchemaEdit = (ESRI.ArcGIS.Geodatabase.IClassSchemaEdit)t;
24                 cSchemaEdit.AlterFieldAliasName(oriFieldName, desFieldName);
25                 MessageBox.Show("done");
26             }
27             catch (System.Exception ex) {
28                 MessageBox.Show(ex.Message);
29             }
30             finally {
31                 if (slock != null)
32                     slock.ChangeSchemaLock(ESRI.ArcGIS.Geodatabase.esriSchemaLock.esriSharedSchemaLock);
33             }
34         }
时间: 2024-10-13 19:44:59

Geodatabase - 修改字段别名(Field Alias)的相关文章

django 修改字段后,同步数据库,失败:django.db.utils.InternalError: (1054, &quot;Unknown column &#39;api_config.project_id_id&#39; in &#39;field list&#39;&quot;)

问题原因是,修改字段后,同步失败了,然后执行查询的时候,就会提示这个错误,这个字段没有 最暴力的方法可以直接在数据库中修改字段,但是修改后,models没同步,可能会存在问题,因此开始我的百度之旅(这个问题网上资料还真的挺少的) 方法一,不要犹豫,重启大法,关闭项目,关闭开发工具,从新打开,这个方法好像不行 方法二,删除大法,因为django有models在,数据库建表还是很容易的,只不过是数据丢失了,对我我这种不正经的开发来说,无关紧要咯 所以,我删除了库,删除了django生成的migrat

修改字段结构之GP工具

即然有这个需求,就有人这样做.有人写了GP工具直接来重命名字段名和字段别名.工具及源码下载链接为:http://www.t00y.com/file/90123888 加载到ToolBox中后,可直接运行这两个工具进行处理. 操作非常简单,只能更改名称或别名,不能更改数据类型及长度等.如有多个修改,可以使用批处理. 下面是修改名称后的效果: 最关键一点是它的物理顺序还是没有改变.

django字段类型(Field types)介绍

字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动添加主键字段. BigIntegerField 64位整数,类似于IntegerField,范围从-9223372036854775808 到9223372036854775807.默认的form widget 是TextInput. BooleanField 一个布尔值(true/false)字段

oracle数据库的建表,删除字段,添加字段,修改字段,修改字段......

1. 使用oracle创建一张表: SQL> create table loginuser( 2 id number(10,2), 3 username varchar(20), 4 password varchar(20), 5 email varchar(30), 6 descriable varchar2(200), 7 regdate date); 创建表的语法: CREATE TABLE table_name( columns_name datatype,...... ); 显示创建表

Oracle修改字段类型和长度

Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle修改字段类型和长度 alter table 表名 modify 字段名 数据类型 如果是修改数据类型比如由varchar2修改为int且字段内有值,会报如下错误 解决方法参考:http://blog.csdn.net/itmyhome1990/article/details/8681206 转载请注明出处:http://blog.csdn.net/itmyhome1990/ar

SQL SERVER数据库的表中修改字段的数据类型后,不能保存

在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一个int型比较好.就打算修改字段类型.可是总是提示不让我修改,那个意思就是说你只能重建这个表.ACCESS都可以让随便修改类型,为啥 SQL SERVER就不行,不信这个邪,还是问问专业测试SQL SERVER的人员吧,问了半天没有反应,看来还是得自己去BAIDU一下,这次搜索很顺利,直接找到了心满意足

Oracle/SQL 修改字段类型和长度

标准SQL修改字段类型和长度语句:ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table test modify column name varchar(255); Oracle修改字段类型和长度语句:ALTER TABLE tableName modify(columnName 类型);例如alter table test modify(name varchar(255)); Oracle/S

MyBatis应用开发(11)映射之结果映射字段别名和HashMap

1.1.1. 字段别名的特殊功能 通过SQL语句的字段别名功能,可以将记录映射到resultType指定的Java Bean类型的属性的属性上. <!-- 通过定义select语句的字段别名为XXX.YYY的形式,可以将字段值赋值给PersonWrapper类的属性person的属性 --> <select id="findPersonWrapper" parameterType="java.lang.String" resultType=&quo

SQL两表关联查询&批量修改字段值

SQL关联查询&修改字段,正确范例如下: --批量修改报告单位名称&更新时间 --tt和tp两表关联查询,将符合条件的tt表中的principal字段更新到tp表的ruperson字段 merge into nhis34.t_publicplaces tp using standard.t_organization tt on (tt.orgcode = tp.r_orgcode and tp.create_time > '2015-05-07 00:00:00') when mat