Working with ArcSDE data



ArcSDE data connections

Working with ArcSDE data requires a connection to an ArcSDE database. In geoprocessing, you can use either a stored ArcSDE connection file or a property set to make the connection.

Creating a connection file

The two ways to create a connection file are as follows:
  • Use the Spatial Database Connection wizard from the Database Connections node in the Catalog tree. Follow the instruction in Adding a database server to ArcGIS for Desktop to make a direct connection.
  • Use the Create ArcSDE Connection File tool (in the Data Management toolbox).
In both cases, a file with a .sde extension is created.

Using the Create ArcSDE Connection File tool

You can use the Create ArcSDE Connection File tool in the Data Management toolbox to create a .sde file on disk. The following code example shows how to create the file:
[C#]
public void createSDEConnectionFile(IGeoProcessor2 gp)
{
    IVariantArray parameters = new VarArrayClass();
    parameters.Add(@"C:\temp");
    parameters.Add("flames.sde");
    parameters.Add("wilma4");
    parameters.Add("5940");
    parameters.Add("vtest");
    parameters.Add("true");
    parameters.Add("toolbox");
    parameters.Add("toolbox");
    parameters.Add("true");
    parameters.Add("sde.DEFAULT");

    IGeoProcessorResult result = null;

    try
    {
        result = (IGeoProcessorResult)gp.Execute(
            "CreateArcSDEConnectionFile_management", parameters, null);
        string conn_file = result.GetOutput(0).GetAsText();
        // Use the connection file for further geoprocessing.
        // ...
    }
    catch (Exception ex)
    {
        // Print exception and error messages.
    }
}
[VB.NET]
Public Sub createSDEConnectionFile(IGeoProcessor2 gp)
    
    Dim parameters As IVariantArray = New VarArray
    parameters.Add("C:\temp");
    parameters.Add("flames.sde");
    parameters.Add("wilma4");
    parameters.Add("5940");
    parameters.Add("vtest");
    parameters.Add("true");
    parameters.Add("toolbox");
    parameters.Add("toolbox");
    parameters.Add("true");
    parameters.Add("sde.DEFAULT");
    
    Dim result As IGeoProcessorResult2 = Nothing
    
    Try
    result = (IGeoProcessorResult)gp.Execute("CreateArcSDEConnectionFile_management", parameters, null);
    Dim conn_file As String = result.GetOutput(0).GetAsText();
    ' Use the connection file for further geoprocessing.
    ' ...
    Catch(ex As Exception)
    ' Print exception and error messages.
    End Try
    
End Sub

Using a connection file

Once you have created a connection file, the catalog path to the .sde file is used as the workspace in geoprocessing. See the following code example:
[C#]
public void SDEConnectionFile(IGeoProcessor2 gp)
{
    gp.SetEnvironmentValue("workspace", @"C:\St_Johns");
    IGpEnumList fcs = gp.ListFeatureClasses("*", "", "");

    // Set the workspace to SDE for ValidateTableName.
    gp.ResetEnvironments();
    string wks = @"Database Connections\Bluestar.sde";
    gp.SetEnvironmentValue("workspace", wks);

    string fc = fcs.Next();
    string outfc = "";
    IVariantArray parameters = new VarArrayClass();

    while (fc != "")
    {
        // Validate the output name.
        outfc = gp.ValidateTableName(fc, wks);

        // Copy the features from D:/St_Johns to the SDE workspace.
        parameters.Add(fc);
        parameters.Add(outfc);
        gp.Execute("CopyFeatures_management", parameters, null);
        fc = fcs.Next();
    }
}
[VB.NET]
Public Sub SDEConnectionFile(ByVal gp As IGeoProcessor2)
    
    gp.SetEnvironmentValue("workspace", "D:\St_Johns")
    Dim fcs As IGpEnumList = gp.ListFeatureClasses("*", "", "")
    
    ' Set the workspace to SDE for ValidateTableName.
    gp.ResetEnvironments()
    Dim wks As String = "Database Connections\Bluestar.sde"
    gp.SetEnvironmentValue("workspace", wks)
    
    Dim fc As String = fcs.Next
    Dim outfc As String = ""
    Dim parameters As IVariantArray = New VarArray
    
    While Not fc Is ""
        
        ' Validate the output name.
        outfc = gp.ValidateTableName(fc, wks)
        
        ' Copy the feature classes from D:/St_Johns to the SDE workspace.
        parameters.Add(fc)
        parameters.Add(outfc)
        gp.Execute("CopyFeatures_management", parameters, Nothing)
        
        fc = fcs.Next
        
    End While
    
End Sub
Whether you use the Desktop Wizard or the geoprocessing tool to create the connection file, you have to use the stored *.sde file.


See Also:

Geoprocessing considerations for ArcSDE data
Connecting to geodatabases and databases




To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):