[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