逆向删除属性表中的字段

删除属性表中的字段一定要注意循环的方式。如果是for循环,i< FeatureClass.Fields.FieldCount话,每删除一个字段FieldCount属性返回的字段数量将减少一个,也就是你根本不能完全删除想要删除的字段;如果你先把FeatureClass.Fields.FieldCount赋给一个变量count,for循环中使用i<count,最后导致索引越界;所以,建议使用逆向的方法删除字段。

  1. IFeatureClass pointFS = GPClass.gpUtilities.OpenFeatureClassFromString(tmpPath + @"\Point.shp");
  2. int fieldCount = pointFS.Fields.FieldCount;
  3. IField delField = null;
  4. //逆向删除,以免出错
  5. for (int i = fieldCount - 1; i >= 0; i--)
  6. {
  7.     delField = pointFS.Fields.get_Field(i);
  8.     if (delField.Name != "FID" &&
  9.         delField.Name != "Shape" &&
  10.         delField.Name != "Layer" &&
  11.         delField.Name != "Text"
  12.         )
  13.     {
  14.         pointFS.DeleteField(delField);
  15.         Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss ") + "删除字段" + delField.Name);
  16.     }
  17. }

需要注意的是,逆向删除时,起始值是Count – 1,因为字段索引是从0开始的,自然,限制条件i>=0.

时间: 2024-10-03 21:18:58

逆向删除属性表中的字段的相关文章

oracle-为什么用plsql删除Oracle表中的字段,过一段时间怎么几个字段又出来了

问题描述 为什么用plsql删除Oracle表中的字段,过一段时间怎么几个字段又出来了 为什么删除Oracle数据库中某张表的字段,怎么过一会几个字段又出来了呢??? 用的hibernate和spring,, 这个是什么情况 解决方案 会不会是hibernate自动帮你建的啊?

oracle 数据库-如何删除oralce表中部分字段值相同的所有记录项?

问题描述 如何删除oralce表中部分字段值相同的所有记录项? 表A中包含几个字段,Key,NO,Year等 现在需要删除,满足Key和NO字段完全相同的记录.需求是所有记录满足条件的记录都删除,不需要保留一条 解决方案 delete from A where Key = NO 解决方案二: oralce删除某字段值相同的记录

看实例学VFP:删除数据表中的记录

本例对看实例学VFP:对数据表中记录进行修改一文的实例进行了一点改进,增加了"撤消"功能.程序运行时如下图: 在组合框中选择要查找的字段,在文本框中输入查找内容后单击右侧的"查找"按钮后将查找结果显示在上方的表格中,"查找"按钮变成"撤消"按钮,同时激活"删除"按钮及用于显示数据的文本框,并将当前记录(满足查询条件的记录)的值同时显示在文本框中,:单击"删除"按钮后会删除查找出来的记录刷

grails在有数据的表中新增字段,如何为新增字段赋初值?

问题描述 有没有人做过对有数据的表中增加一字段,通过grails的domain对应新增字段的属性设定数据库表的默认值,怎么设置.我这边不论怎么设置,新增的domain属性,在有数据的表中其字段的值永远都是(null),可我想要我设定的默认值我该怎么做?如某domain中定义新增的属性intsynDelType=0;数据库对应的表中列syn_del_type的值一直都是(null)注:是在有数据的表,新加属性重新启动工程对新加列赋初值,不是在new或者update的时候赋初值因为新加这个字段,就是

看实例学VFP:利用多个表中的字段创建新表

本例中再来复习一下select语句中的inner join子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例的主要操作是在表单的init事件中完成的,在该事件中进行连接查询并将查询结果输出为一个临时表(该表包括了"人员信息表"的"姓名,性别,基本工资"3个字段以及"工资表"的"奖金,生活补助,养老保险"3个字段),最后将该表设为表格控件的数据源.本例应用到了数据环境,并使用"数

java-当我删除学生表中的信息时,提示该学生在老师表中存在.

问题描述 当我删除学生表中的信息时,提示该学生在老师表中存在. tab_teacher (老师表) t_id t_name t_s_id {001,王老师,100} {002,李老师,101} {003,李老师,102} tab_student (学生表) s_id s_name {100,张三} {104,张四} {100,张三}我删除这条信息的时候,提示该学生老师表中存在.求代码 解决方案 删之前加个判断 .. 1先查询教师表有没有数据(select * from teacher where

c++获取sqlite3数据库表中所有字段的方法小结_C 语言

常用方法: 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串,然后进行解析获取到相应的字段 3.采用配置文件的方式,将所有字段名写入配置文件 下面针对这三个方法给大家逐一详细介绍. 方法1:使用sqlite3_get_table函数 代码: char *dbname = "test.db"; int rc = sqlite3_open(dbname, &db); if (rc == SQLITE_OK) { char sql[256]

如何有条件的分步删除数据表中的记录

数据|条件 如何有条件的分步删除数据表中的记录作者:eygle出处:http://blog.eygle.com日期:February 22, 2005« 自己动手,丰衣足食 | Blog首页 有时候我们需要分配删除数据表的一些记录,分批提交以减少对于Undo的使用,本文提供一个简单的存储过程用于实现该逻辑.你可以根据你的需要进行适当调整,本例仅供参考: SQL> create table test as select * from dba_objects;Table created.SQL>

Visual C#来删除注册表中的注册信息

visual|注册表 在<用Visual C#读取注册信息>的文中,已经介绍了用 Visual C#来读取注册表中的注册信息.本文就来介绍用Visual C#对注册表的另外一个操作,这也是一个具有破坏性的操作过程--删除注册信息. 在上文中已经知道,由于Visual C#本身没有带类库,他对注册表的处理过程是通过调用.Net FrameWork SDK中的名称空间Microsoft.Win32中封装的二个类来实现的.这二个类就是Registry类.RegistryKey类.在 Registry