SqlDbType and Geography

前端 未结 3 1938
天命终不由人
天命终不由人 2021-01-11 22:11

What SqlDbType enumeration should I use when my column is the Geography type? I\'m using MS SQL Server 2008 R2.

This is what I\'m looking for specifically:

相关标签:
3条回答
  • 2021-01-11 22:21

    SqlGeography is implemented as a CLR user defined type by SQL Server, so you can do something a little like:

    SqlGeography geo = // Get the geography from somewhere...
    
    using (SqlCommand command = 
        new SqlCommand(@"dbo.up_Foobar_Insert", connection))
        command.Parameters.Add(new SqlParameter("@Point", geo) { UdtTypeName = "Geography" });
        command.ExecuteNonQuery();
    }
    

    If it is a desktop application you've got it quite a bit easier. There is a good example at the Code Project of an SQL Geometry viewer that will help for both desktop or web.

    You need to reference Microsoft.SqlServer.Types.dll, found at SQL Server Install/100/SDK/Assemblies to use SQLGeometry or SQLGeography directly.

    0 讨论(0)
  • 2021-01-11 22:34

    Update

    Try this:

    //define parameter
    command.Parameters.Add("@shape", SqlDbType.NVarChar);
    //
    //code in between omitted
    //
    //set value of parameter
    command.Parameters["@shape"].Value = feature.Geometry.AsText();
    

    Taken from Inserting SQL 2008 Geometry With a SqlCommand

    0 讨论(0)
  • 2021-01-11 22:35

    When I tried to use SqlDbType.NVarChar I received and error

    Failed to convert parameter value from Geography to a String

    What resolved this problem for me was to use SqlDbType.Udt

    var pgeo = cmd.Parameters.Add("@GeoLocation", SqlDbType.Udt);
    pgeo.UdtTypeName = "Geography";
    

    And then later, in a loop, I set the value of the parameter:

    var ss = new SqlString(objValue.ToString());
    var sc = new SqlChars(ss);
    var geocode = SqlGeography.STPointFromText(sc, 4326);
    cmd.Parameters["@GeoLocation"].Value = geocode;
    

    Note: this requires Microsoft.SqlServer.Types and System.Data.SqlTypes

    0 讨论(0)
提交回复
热议问题