将地理类型保存到SQL Server

时间:2017-03-20 09:09:23

标签: c# sql-server

我的表格中包含'地理'类型的列。如何使用C#SqlGeography.Point()和ado.net将数据保存到此表?我有以下代码

var stringPos = item.Position.Split(',');
var latPos = double.Parse(stringPos[0], CultureInfo.InvariantCulture);
var longPos = double.Parse(stringPos[1], CultureInfo.InvariantCulture);

var position = SqlGeography.Point(latPos, longPos, 4326);

string query = @"INSERT INTO myTable VALUES (@position, @postCode)";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@position", position);
cmd.Parameters.AddWithValue("@postCode", item.ZipCode);

cmd.ExecuteNonQuery();

我有以下代码,但它抛出异常:

  

必须为UDT参数设置UdtTypeName属性。

1 个答案:

答案 0 :(得分:1)

<强>解决方案:

更改

cmd.Parameters.AddWithValue("@position", position);

cmd.Parameters.Add(new SqlParameter("@position", position) { UdtTypeName = "Geography" });