How to: Load Data from a SQL Geometry Datasource

  • 2 minutes to read

To load data from a SQL Geometry data source, do the following.

  1. Create a SqlGeometryDataAdapter object.
  2. Specify its SqlGeometryDataAdapter.ConnectionString, SqlGeometryDataAdapter.SqlText and SqlGeometryDataAdapter.SpatialDataMember properties.
  3. Assign this object to the VectorItemsLayer.Data property.
NOTE

All data table field values loaded from the database will be provided as attributes for each SqlGeometryItem object generated using SqlGeometryDataAdapter.

const string filePath = "..\\..\\Data\\SQLG.mdf";

private void Form1_Load(object sender, System.EventArgs e) {
    string fullFilePath = Path.GetFullPath(Path.Combine(Application.StartupPath, filePath));
    SqlGeometryDataAdapter adapter = new SqlGeometryDataAdapter() {
        ConnectionString = "Data Source=(local);AttachDbFileName=" + fullFilePath + 
            ";Database=SqlGeometryDB;Integrated Security=True;MultipleActiveResultSets=True",
        SqlText = "SELECT TOP 1000 [GeomCol1],[TextCol] FROM [dbo].[DemoTable]",
        SpatialDataMember = "GeomCol1"
    };
    VectorItemsLayer layer = new VectorItemsLayer() {
        Data = adapter,
        ShapeTitlesPattern = "{TextCol}"
    };
    layer.DataLoaded += layer_DataLoaded;
    mapControl1.Layers.Add(layer);
}

void layer_DataLoaded(object sender, DataLoadedEventArgs e) {
    mapControl1.ZoomToFitLayerItems();
}