逆向删除属性表中的字段

删除属性表中的字段一定要注意循环的方式。如果是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-09 09:22:01

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

删除数据表中除id外其他字段相同的冗余信息

删除一个信息表中除id外其他字段都相同的冗余信息,如下 id name addr 1 a b 2 a b 3 b c 删除这个表中的冗余信息 即应该是 id name addr 1 a b 3 b c 设table为t Sql:delete from tableName where id not in (select min(id) from tableName group by name, addr…)

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use

删除oracle表中的完全重复数据

今天数据库除了个问题:项目中的一张表,数据是从另外一个系统中相同的表里弄过来的,但是可能由于昨天同事导数据导致我这张表中的数据出现了完全相同的情况(所有字段),全部是两条,需要删除相同的数据. 做法:1.创建中间表, 2.将原表中的不重复数据放入中间表, 3.删除原表数据 4.将中间表数据放入原表 5.删除中间表 --创建中间表 CREATE TABLE ATT_SCATTER_REQ_NUM_TEMP AS (SELECT distinct * FROM ATT_SCATTER_REQ_NUM

Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create or replace type splitTable is table of varchar2(100); 2.创建函数fn_splitString(功能是将字符串分割成多条记录)--测试语句select * from table(fn_splitString('ernanyinv','nan'))

mysql,user表中各字段的含义

1.查询user表 1 select * from mysql.user 2.user表中各字段的含义 1 Select_priv:用户可以通过SELECT命令选择数据. 2 Insert_priv:用户可以通过INSERT命令插入数据; 3 Update_priv:用户可以通过UPDATE命令修改现有数据; 4 Delete_priv:用户可以通过DELETE命令删除现有数据; 5 Create_priv:用户可以创建新的数据库和表; 6 Drop_priv: 用户可以删除现有数据库和表; 7

[数据库] 取指定表中某字段的累加和不超过总和80%的行

有表 Table_1, 字段 Value int,  P float .5 要取出以 Value 字段倒序的 P 字段累加和 不超过 整个表中P字段总和的 80%的行.  并在返回列表中 加入字段 SUM ,存放当前行与前面所有行的累加和. 折腾了半天, 写了下面的查询sql: declare @e float select @e = sum(P) from [Table_1] Set @e = @e * 0.8 ;with T as ( select [ID] = row_number() o

如何删除工作表中的网格线(gridlines)

删除工作表中的网格其实很简单,首先选中要删除网格线的工作表:如图1 图1 然后单击"视图(VIEW)"菜单,在"视图(VIEW)"菜单中,有个叫"网格线(GridLines)"的复选框:如图2: 图2 将对勾去掉即可:如图3

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My

mysql向表中某字段后追加一段字符串:

mysql向表中某字段后追加一段字符串:update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串update table_name set field=CONCAT('str',field) MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果