private void objectLoaderToolStripMenuItem_Click(object sender, EventArgs e) { Stopwatch myWatch = Stopwatch.StartNew(); IObjectLoader objectLoader = new ObjectLoaderClass(); IFeatureClass sourceFeatureClass = getFeatureClass("esriDataSourcesGDB.FileGDBWorkspaceFactory", fileGDBPath, sourceFCName); IFeatureClass targetFeatureClass = getFeatureClass("esriDataSourcesGDB.SdeWorkspaceFactory", sdePath, targetFCName); string sInFieldList = targetFeatureClass.Fields.get_Field(0).Name; for (int i = 1; i < targetFeatureClass.Fields.FieldCount; i++) { sInFieldList = sInFieldList + "," + targetFeatureClass.Fields.get_Field(i).Name; } IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = queryClause; queryFilter.SubFields = sInFieldList; IEnumInvalidObject invalidObject; objectLoader.LoadObjects(null, sourceFeatureClass as ITable, queryFilter, targetFeatureClass as ITable, targetFeatureClass.Fields, false, 0, false, false, 1000, out invalidObject); IFeatureClassManage targetFeatureClassManage = targetFeatureClass as IFeatureClassManage; targetFeatureClassManage.UpdateExtent(); myWatch.Stop(); string time = myWatch.Elapsed.TotalSeconds.ToString(); MessageBox.Show(time + " Seconds"); }
public static bool LoadData_Loader(ITable sourceTable, ITable targetTable, out JTLoadDataError[] errors) { if (sourceTable == null || targetTable == null) { throw new ArgumentNullException(); } IFields sFields = sourceTable.Fields; IFields tFields = targetTable.Fields; string sourceFieldsStr = string.Empty; var tFieldCount = tFields.FieldCount; if (tFieldCount > 0) { for (int i = 0; i < tFieldCount; i++) { var tField = tFields.Field[i]; if (!tField.Editable) { continue; } var tFieldname = tField.Name; var sFieldIndex = sFields.FindField(tFieldname); if (sFieldIndex >= 0) { sourceFieldsStr += tFieldname + ","; } else { sourceFieldsStr += "'',"; } } } IObjectLoader objectLoader = new ObjectLoaderClass(); IQueryFilter qf = new QueryFilterClass { SubFields = sourceFieldsStr, }; objectLoader.LoadObjects(null, sourceTable, qf, targetTable, tFields, false, 0, false, false, 20, out IEnumInvalidObject enumInvalidObject); var listErrors = new List <JTLoadDataError>(); IInvalidObjectInfo invalidObject = null; while ((invalidObject = enumInvalidObject.Next()) != null) { listErrors.Add(new JTLoadDataError(invalidObject.InvalidObjectID, invalidObject.ErrorDescription)); } ComReleaser.ReleaseComObject(tFields); ComReleaser.ReleaseComObject(sFields); ComReleaser.ReleaseComObject(objectLoader); ComReleaser.ReleaseComObject(qf); errors = listErrors.ToArray(); return(errors.Length <= 0); }
/// <summary> /// Test 6s /// </summary> /// <param name="sourceTable"></param> /// <param name="targetTable"></param> /// <param name="errors"></param> /// <param name="queryClause"></param> /// <returns></returns> public static bool LoadData_Loader(ITable sourceTable, ITable targetTable, out JTLoadDataError[] errors, string queryClause = null) { if (sourceTable == null || targetTable == null) { throw new ArgumentNullException(); } IFields sFields = sourceTable.Fields; IFields tFields = targetTable.Fields; string sourceFieldsStr = string.Empty; var tFieldCount = tFields.FieldCount; if (tFieldCount > 0) { sourceFieldsStr = tFields.Field[0].Name; for (int i = 1; i < tFieldCount; ++i) { sourceFieldsStr += "," + tFields.Field[i].Name; } } IObjectLoader objectLoader = new ObjectLoaderClass(); IQueryFilter qf = new QueryFilterClass { SubFields = sourceFieldsStr, WhereClause = queryClause, }; objectLoader.LoadObjects(null, sourceTable, qf, targetTable, tFields, false, 0, false, false, 20, out IEnumInvalidObject enumInvalidObject); var listErrors = new List <JTLoadDataError>(); IInvalidObjectInfo invalidObject = null; while ((invalidObject = enumInvalidObject.Next()) != null) { listErrors.Add(new JTLoadDataError(invalidObject.InvalidObjectID, invalidObject.ErrorDescription)); } ComReleaser.ReleaseComObject(invalidObject); ComReleaser.ReleaseComObject(qf); ComReleaser.ReleaseComObject(objectLoader); ComReleaser.ReleaseComObject(tFields); ComReleaser.ReleaseComObject(sFields); errors = listErrors.ToArray(); return(errors.Length <= 0); }