[fdo-users] inserting data into a SDF file

vinay vinay.tikka at eaglepoint.com
Wed Feb 18 17:25:57 EST 2009


Hi All,

I am using the FDO dlls from the MAP ObjectArx SDK 2009  in Visual studio
2008. I am writing a small app to understand FDO API. I am able to create a
sdf file, describe schema for the sdf file, create feature class, etc. I
created four datapropertydefinitions in which one is an identityProperty. I
am inserting values into my properties in a for-loop. When I open this sdf
file in map 2009, all columns have the same values except the auto generated
property column as shown below.

Please take a look in case I am missing something simple here.

http://n2.nabble.com/file/n2349739/data.png 

Source code snippets for the sample app is below

OSGeo.FDO.Schema.FeatureSchema Schema = new
OSGeo.FDO.Schema.FeatureSchema("SchemaOne", "Sample Schema");                                                
                        OSGeo.FDO.Schema.FeatureClass ClassOne = new
OSGeo.FDO.Schema.FeatureClass("Class one", "Class one for Schema One");

                        
                        OSGeo.FDO.Schema.DataPropertyDefinition DataProp1 =
new OSGeo.FDO.Schema.DataPropertyDefinition("Prop1", "Property one");
                        OSGeo.FDO.Schema.DataPropertyDefinition DataProp2 =
new OSGeo.FDO.Schema.DataPropertyDefinition("Prop2", "Property two");
                        OSGeo.FDO.Schema.DataPropertyDefinition DataProp3 =
new OSGeo.FDO.Schema.DataPropertyDefinition("Prop3", "Property three");
                        OSGeo.FDO.Schema.DataPropertyDefinition DataProp4 =
new OSGeo.FDO.Schema.DataPropertyDefinition("Prop4", "Property four");
                        DataProp1.DataType =
OSGeo.FDO.Schema.DataType.DataType_Int32;
                        DataProp1.IsAutoGenerated = true;
                        DataProp1.Nullable = false;
              
                        DataProp2.DataType =
OSGeo.FDO.Schema.DataType.DataType_Decimal;
                        DataProp2.IsAutoGenerated = false;
                        DataProp2.Nullable = false;
                        DataProp2.ReadOnly = false;

                        DataProp3.DataType =
OSGeo.FDO.Schema.DataType.DataType_Decimal;
                        DataProp3.IsAutoGenerated = false;
                        DataProp3.Nullable = false;
                        DataProp3.ReadOnly = false;

                        DataProp4.DataType =
OSGeo.FDO.Schema.DataType.DataType_String;
                        DataProp4.IsAutoGenerated = false;
                        DataProp4.Nullable = false;
                        DataProp4.ReadOnly = false;
                        DataProp4.Length = 20;
                       
                        //Class one data props                        
                        ClassOne.Properties.Add(DataProp1);
                        ClassOne.IdentityProperties.Add(DataProp1);
                        ClassOne.Properties.Add(DataProp2);
                        ClassOne.Properties.Add(DataProp3);
                        ClassOne.Properties.Add(DataProp4);                                                



OSGeo.FDO.Connections.Capabilities.IConnectionCapabilities connCap =
conn.ConnectionCapabilities;
                        ITransaction fdoTrans = null;
                        if (connCap.SupportsTransactions())
                            fdoTrans = conn.BeginTransaction();

                        using (OSGeo.FDO.Commands.Feature.IInsert insert =
conn.CreateCommand(OSGeo.FDO.Commands.CommandType.CommandType_Insert) as
OSGeo.FDO.Commands.Feature.IInsert)
                        {

                            for (int nIndex = 1; nIndex < 5; nIndex++)
                            {

                                OSGeo.FDO.Commands.PropertyValue PropValue1
= null;
                                PropValue1 = new
OSGeo.FDO.Commands.PropertyValue();
                                PropValue1.SetName(DataProp1.Name);
                                PropValue1.Value = new
OSGeo.FDO.Expression.Int32Value(nIndex);
                                insert.PropertyValues.Add(PropValue1);

                                PropValue1 = null;
                                PropValue1 = new
OSGeo.FDO.Commands.PropertyValue();
                                PropValue1.SetName(DataProp2.Name);
                                PropValue1.Value = new
OSGeo.FDO.Expression.DecimalValue(1000.50 + nIndex);
                                insert.PropertyValues.Add(PropValue1);

                                PropValue1 = null;
                                PropValue1 = new
OSGeo.FDO.Commands.PropertyValue();
                                PropValue1.SetName(DataProp3.Name);
                                PropValue1.Value = new
OSGeo.FDO.Expression.DecimalValue(2000.50 + nIndex);
                                insert.PropertyValues.Add(PropValue1);

                                PropValue1 = null;
                                PropValue1 = new
OSGeo.FDO.Commands.PropertyValue();
                                PropValue1.SetName(DataProp4.Name);
                                PropValue1.Value = new
OSGeo.FDO.Expression.StringValue("Note"+nIndex.ToString());
                                insert.PropertyValues.Add(PropValue1);                                

                                try
                                {
                                    using
(OSGeo.FDO.Commands.Feature.IFeatureReader reader = insert.Execute())
                                    {
                                        while (reader.ReadNext()) { }                                        
                                    }
                                }
                                catch (Exception ex)
                                {
                                    //throw new
FeatureServiceException("Error inserting new feature", ex);
                                    MessageBox.Show(ex.Message);
                                }
                            }
                        }
                        if (connCap.SupportsTransactions())
                            fdoTrans.Commit();
                        conn.Close();                        


-- 
View this message in context: http://n2.nabble.com/inserting-data-into-a-SDF-file-tp2349739p2349739.html
Sent from the FDO Users mailing list archive at Nabble.com.



More information about the fdo-users mailing list